Exemplo n.º 1
0
 protected function syncProviderUser($driver, $userProvider)
 {
     $userProviderId = $userProvider->getId();
     $user = Auth::user();
     $socialId = $driver . '_id';
     $userAlreadyConnectedToProvider = User::where($socialId, '=', $userProviderId)->first();
     if ($userAlreadyConnectedToProvider) {
         Auth::loginUsingId($userAlreadyConnectedToProvider->id);
     } elseif (Auth::check()) {
         $this->connectUsertoProvider($user, $socialId, $userProviderId);
     } else {
         $request = ['email' => $userProvider->getEmail() ?: $userProviderId . '@' . $driver, 'password' => str_random(10), 'name' => $userProvider->getName(), 'is_validate' => $userProvider->getEmail() ? '1' : '0'];
         $userService = new UserService();
         $item = $userService->store($request, ucfirst($driver));
         $user = $item['user'];
         $userService->makeAvatarFor($user, $userProvider->getAvatar());
         $this->connectUsertoProvider($user, $socialId, $userProviderId);
         Auth::loginUsingId($user->id);
     }
     return redirect()->route('user.ad.index');
 }