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 $userData * @return User */ public function findByUsernameOrCreate($userData) { $user = User::firstOrCreate(['username' => $userData->getNickname(), 'email' => $userData->getEmail()]); $user->full_name = $userData->getName(); $user->save(); return $user; }
public function login(User $socialAcount, $provider) { $userClass = config('auth.model'); $user = $userClass::whereEmail($socialAcount->getEmail())->first(); if (!$user) { $user = $userClass::create(['name' => $socialAcount->getName(), 'email' => $socialAcount->getEmail(), 'password' => Hash::make(Str::random(16)), 'status' => config('laravolt-auth.default.status')]); } $account = SocialAccount::firstOrCreate(['provider' => $provider, 'provider_id' => $socialAcount->getId()]); $user->socialAccounts()->save($account); $account->touch(); $this->auth->login($user, true); }
public function createOrGetUser(ProviderUser $providerUser) { $account = SocialAccount::whereProvider('facebook')->whereProviderUserId($providerUser->getId())->first(); if ($account) { return $account->user; } else { $account = new SocialAccount(['provider_user_id' => $providerUser->getId(), 'provider' => 'facebook']); $user = User::whereEmail($providerUser->getEmail())->first(); $email = ""; if ($providerUser->getEmail() == "") { $email = $providerUser->getName(); } else { $email = $providerUser->getEmail(); } if (!$user) { $user = User::create(['email' => $email, 'name' => $providerUser->getName()]); } $account->user()->associate($user); $account->save(); return $user; } }
public function createOrGetUser(SocialUser $providerUser, $providerName) { $account = SocialAccount::whereProvider($providerName)->whereProviderUserId($providerUser->getId())->first(); if ($account) { return $account->user; } $account = new SocialAccount(['provider_user_id' => $providerUser->getId(), 'provider' => $providerName]); $user = User::whereEmail($providerUser->getEmail())->first(); if (!$user) { $user = User::create(['email' => $providerUser->getEmail(), 'name' => $providerUser->getName()]); } $account->user()->associate($user); $account->save(); return $user; }
public function createOrGetUser(ProviderUser $providerUser) { // Cari akun di db $account = SocialAccount::whereProvider('facebook')->whereProviderUserId($providerUser->getId())->first(); if ($account) { // Kalo ada > return user return $account->user; } else { // Kalo gaada > register $account = new SocialAccount(['provider_user_id' => $providerUser->getId(), 'provider' => 'facebook']); $user = User::whereEmail($providerUser->getEmail())->first(); if (!$user) { $user = User::create(['email' => $providerUser->getEmail(), 'name' => $providerUser->getName()]); } $account->user()->associate($user); $account->save(); return $user; } }
/** * @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(); }
/** * If does not exists, creates a shadow OAuth user using user info provided * by the OAuth service provider and assigns default role to this user * for all apps in the system. If user already exists then updates user's * role for all apps and returns it. * * @param OAuthUserContract $OAuthUser * * @return User * @throws \Exception */ public function createShadowOAuthUser(OAuthUserContract $OAuthUser) { $fullName = $OAuthUser->getName(); @(list($firstName, $lastName) = explode(' ', $fullName)); $email = $OAuthUser->getEmail(); $serviceName = $this->getName(); $providerName = $this->getProviderName(); $accessToken = $OAuthUser->token; if (empty($email)) { $email = $OAuthUser->getId() . '+' . $serviceName . '@' . $serviceName . '.com'; } else { list($emailId, $domain) = explode('@', $email); $email = $emailId . '+' . $serviceName . '@' . $domain; } $user = User::whereEmail($email)->first(); if (empty($user)) { $data = ['name' => $fullName, 'first_name' => $firstName, 'last_name' => $lastName, 'email' => $email, 'is_active' => true, 'oauth_provider' => $providerName, 'password' => $accessToken]; $user = User::create($data); } $defaultRole = $this->getDefaultRole(); User::applyDefaultUserAppRole($user, $defaultRole); return $user; }
/** * Gets the user model according to the user contract given. * * @param UserContract $user The user object from the oauth event. * * @return \App\User The user model from the database. */ private function getUserModel(UserContract $user) { $faker = Factory::create(); $model = User::whereEmail($user->getEmail())->first(); if (!$model) { $model = new User(); $model->name = $user->getName(); $model->email = $user->getEmail(); $model->password = bcrypt($faker->words(5, true)); $model->admin = false; $model->save(); } return $model; }