0

As I am interested in getting the gender info form social network when user register, I've noticed that gender mapping is missing in the native Laravel socialite provider, for ex:

GoogleProvider.php

protected function mapUserToObject(array $user)
    {
        return (new User)->setRaw($user)->map([
            'id' => $user['id'], 'nickname' => array_get($user, 'nickname'), 'name' => $user['displayName'],
            'email' => $user['emails'][0]['value'], 'avatar' => array_get($user, 'image')['url'],
        ]);
    }

So, I can't just edit the above method and map the gender field, because GoogleProvider.php is located in the vendor folder.

The question is, how would I override mapUserToObject in different social providers afforded by Laravel?

Or, what is the recommended approach in such case?

Mohammad AL-Raoosh
  • 721
  • 1
  • 12
  • 32

1 Answers1

1

Providing Google passes a gender field you should be able to access it like...

$user = Socialite::driver('google')->user();
echo $user['gender'];
fire
  • 21,383
  • 17
  • 79
  • 114