예제 #1
0
파일: Oauth.php 프로젝트: maniolek/demo
 /**
  * Authenticates authorized user
  *
  * @param Identity $oauthIdentity
  * @throws \User\Services\Exception\SignUpFailedException
  */
 public function authenticate(Identity $oauthIdentity)
 {
     $auth = $this->di->get('serviceManager')->getService('auth:auth');
     try {
         $authIdentity = $auth->authenticateByEmail($oauthIdentity->getEmail());
     } catch (IdentityNotFoundException $ex) {
         $userService = $this->di->get('serviceManager')->getService('user:user');
         $userModel = new User();
         //store identity values without id, service and accessToken
         $identityValues = $oauthIdentity->toArray();
         unset($identityValues['id']);
         unset($identityValues['service']);
         unset($identityValues['accessToken']);
         $userModel->writeAttributes($identityValues);
         //try to create new account
         if (!$userService->createAccount($userModel)) {
             throw new SignUpFailedException();
         }
         $authIdentity = $auth->authenticateByEmail($oauthIdentity->getEmail());
     }
     $this->afterAuthentication($authIdentity, $oauthIdentity);
 }