/** * Create new user if it does not exists. * * @param Provider * @param \Laravel\Socialite\Contracts\User * @return User */ public static function findOrCreate(Provider $provider, SocialUser $socialUser) { // If user already exists reuse it $user = self::where(['uuid' => $socialUser->getId(), 'provider_id' => $provider->id])->withTrashed()->first(); if ($user) { return $user; } // Create a new user $user = new static(); $user->uuid = $socialUser->getId(); $user->name = $socialUser->getName(); $user->nickname = $socialUser->getNickname(); $user->email = $socialUser->getEmail(); $user->avatar = $socialUser->getAvatar(); $user->provider_id = $provider->id; $user->language_id = app('language')->id; $user->role_id = Role::whereIsDefault(true)->firstOrFail()->id; $user->save(); return $user; }