public function createOauthUser(OauthUser $oauthUser, string $oauthIdName, string $oauthId) { /** @var User $user */ $user = $this->createModel(['name' => $oauthUser->getName(), 'email' => $oauthUser->getEmail(), $oauthIdName => $oauthId]); list($saved, $user) = $this->save($user->verify()); if ($saved) { // fire registered via oauth event event(new RegisteredViaOauth($user)); // put avatar upload in queue if ($avatar = $oauthUser->getAvatar()) { dispatch(new UploadOauthAvatar($user, $this->getLargeAvatar($avatar))); } } return $saved ? $user : null; }
/** * @param \Laravel\Socialite\Contracts\User $user * @return array */ private function githubUserToArray(GithubUser $user) { return ['id' => $user->getId(), 'name' => $user->getNickname(), 'email' => $user->getEmail(), 'github_id' => $user->getId(), 'github_url' => 'https://github.com/' . $user->getNickname(), 'image_url' => $user->getAvatar()]; }
/** * @param string $socialDriver * @param \Laravel\Socialite\Contracts\User $socialUser * @return SocialAccount */ public function fillSocialAccount($socialDriver, $socialUser) { $this->socialAccount->fill(['driver' => $socialDriver, 'driver_id' => $socialUser->getId(), 'avatar' => $socialUser->getAvatar()]); return $this->socialAccount; }
/** * @param \Laravel\Socialite\Contracts\User $login * @return User */ private function createOrFindUser($login) { $user = User::firstOrNew(['email' => $login->getEmail()]); if ($user->exists) { return $user; } $user->name = $login->getName() ?: $login->getNickname(); $user->nickname = $login->getNickname(); $user->password = Hash::make($login->getId() . time()); $user->avatar = $login->getAvatar(); $user->admin = User::count() == 0; $user->save(); return $user; }
/** * 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; }
/** * Validate data from a social provider. * * @param \Laravel\Socialite\Contracts\User * @return \Illuminate\Contracts\Support\MessageProvider */ public function validate(SocialUser $socialUser) { $input = ['uuid' => $socialUser->getId(), 'name' => $socialUser->getName(), 'nickname' => $socialUser->getNickname(), 'email' => $socialUser->getEmail(), 'avatar' => $socialUser->getAvatar()]; $customMessages = ['same' => _('Your account is not verified')]; return Validator::make($input, $this->rules, $customMessages)->setAttributeNames($this->labels)->errors(); }
private function populateSession(YoutubeUser $youtubeUser) { $session = $this->request->session(); $userSessionValues = ['youtube_id' => $youtubeUser->getId(), 'name' => $youtubeUser->getNickname(), 'avatar' => $youtubeUser->getAvatar(), 'token' => $youtubeUser->token]; $session->put('user', $userSessionValues); }