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); } } } }
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); } }