示例#1
1
 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;
 }
示例#3
0
 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);
 }
示例#4
0
 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;
     }
 }
示例#7
0
 /**
  * @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;
 }
示例#8
0
 /**
  * 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;
 }
示例#9
0
 /**
  * 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();
 }
示例#10
0
 /**
  * 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;
 }
示例#11
0
 /**
  * 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;
 }