Пример #1
0
 /**
  * Login the given user by their profile received
  * from the request's input.
  *
  * @param  string  $provider
  * @param  \Illuminate\Http\Request $request
  *
  * @return array
  */
 public function login($provider, Request $request)
 {
     if ($this->validate($request)) {
         $profile = $this->getProfile($provider, $request->input());
         $name = trim($profile->name);
         $email = trim($profile->email);
         $avatar = trim($profile->avatar);
         $info = $profile->info();
         // check for user's existence by social account ID
         if ($account = $this->accounts->findBySocialId($request->input('id'))) {
             // existing user
             $user = $account->user;
             $method = $this->getUpdateMethodForProvider($provider);
             $user = $this->users->{$method}($user->getKey(), $name, $email, $avatar, $info);
         } else {
             // new user
             $method = $this->getCreateMethodForProvider($provider);
             $user = $this->users->{$method}($name, $email, $avatar, $info);
             // for a newly registered user we will send an email address
             // verification email if we have it
             if (!empty($email)) {
                 $code = $this->mailer->sendVerificationEmail($name, $email);
                 // store verification code for user so that we can track their verification process
                 $this->codes->createForEmail($email, $code);
             }
         }
     }
     $token = $this->session->generateToken($user);
     // set the token for the user since the token is per session
     $user->access_token = $token;
     // start the session for the generated token
     $this->session->start($user);
     return $user;
 }