Ejemplo n.º 1
0
 public function loginWithGoogle()
 {
     $di = $this->getDI();
     $config = $di->get('config')->pup->connectors->google->toArray();
     $pupRedirect = $di->get('config')->pup->redirect;
     $config['redirect_uri'] = $config['redirect_uri'] . 'user/loginWithGoogle';
     $google = new GoogleConnector($config);
     $response = $google->connect($di);
     if ($response['status'] == 0) {
         return $this->response->redirect($response['redirect'], true);
     } else {
         $gplusId = $response['userinfo']['id'];
         $email = $response['userinfo']['email'];
         $name = $response['userinfo']['name'];
         $user = User::findFirst("gplus_id='{$gplusId}' OR email = '{$email}'");
         if ($user) {
             $this->checkUserFlags($user);
             $this->setIdentity($user);
             if (!$user->getGplusId()) {
                 $user->setGplusId($gplusId);
                 $user->setGplusName($name);
                 $user->setGplusData(serialize($response['userinfo']));
                 $user->update();
             }
             $this->saveSuccessLogin($user);
             return $this->response->redirect($pupRedirect->success);
         } else {
             $password = $this->generatePassword();
             $user = new User();
             $user->setEmail($email);
             $user->setPassword($di->get('security')->hash($password));
             $user->setGplusId($gplusId);
             $user->setGplusName($name);
             $user->setGplusData(serialize($response['userinfo']));
             $user->setMustChangePassword(0);
             $user->setGroupId(2);
             $user->setBanned(0);
             $user->setSuspended(0);
             $user->setActive(1);
             if (true == $user->create()) {
                 $this->setIdentity($user);
                 $this->saveSuccessLogin($user);
                 return $this->response->redirect($pupRedirect->success);
             } else {
                 foreach ($user->getMessages() as $message) {
                     $this->flashSession->error($message->getMessage());
                 }
                 return $this->response->redirect($pupRedirect->failure);
             }
         }
     }
 }
Ejemplo n.º 2
0
 public function loginWithGoogle()
 {
     $di = $this->getDI();
     $config = $di->get('config')->pup->connectors->google->toArray();
     $pupRedirect = $di->get('config')->pup->redirect;
     $config['redirect_uri'] = $config['redirect_uri'] . 'user/loginWithGoogle';
     $google = new GoogleConnector($config);
     $response = $google->connect($di);
     if ($response['status'] == 0) {
         return $this->response->redirect($response['redirect'], true);
     }
     $gplusId = $response['userinfo']['id'];
     $email = $response['userinfo']['email'];
     $name = $response['userinfo']['name'];
     $user = User::findFirst("gplus_id='{$gplusId}' OR email = '{$email}'");
     if ($user) {
         $this->checkUserFlags($user);
         $this->setIdentity($user);
         if (!$user->getGplusId()) {
             $user->setGplusId($gplusId);
             $user->setGplusName($name);
             $user->setGplusData(serialize($response['userinfo']));
             $user->update();
         }
         $this->saveSuccessLogin($user);
         return $this->response->redirect($pupRedirect->success);
     } else {
         $password = $this->generatePassword();
         $user = $this->newUser()->setName($name)->setEmail($email)->setPassword($di->get('security')->hash($password))->setGplusId($gplusId)->setGplusName($name)->setGplusData(serialize($response['userinfo']));
         return $this->createUser($user);
     }
 }