/** * Login with HybridAuth * * Passed in Params: * - provider: HybridAuth provider identifier. * * Redirects To: Route 'home' */ public function loginAction() { $ref = urldecode($this->getRequest()->getBasePath() . $this->params()->fromQuery('ref')); $provider = $this->params('provider', '--keiner--'); $hauth = $this->serviceLocator->get('HybridAuthAdapter'); $hauth->setProvider($provider); $auth = $this->auth; $result = $auth->authenticate($hauth); $resultMessage = $result->getMessages(); if (array_key_exists('firstLogin', $resultMessage) && $resultMessage['firstLogin'] === true) { try { $user = $auth->getUser(); $password = substr(md5(uniqid()), 0, 6); $login = uniqid() . ($this->options->auth_suffix != "" ? '@' . $this->options->auth_suffix : ''); $externalLogin = isset($user->login) ? $user->login : '******'; $this->logger->debug('first login via ' . $provider . ' as: ' . $externalLogin); $user->login = $login; $user->setPassword($password); $user->setRole($this->options->getRole()); $mail = $this->mailer('htmltemplate'); $mail->setTemplate('mail/first-socialmedia-login'); $mail->setSubject($this->options->getMailSubjectRegistration()); $mail->setVariables(array('displayName' => $user->getInfo()->getDisplayName(), 'provider' => $provider, 'login' => $login, 'password' => $password)); $mail->addTo($user->getInfo()->getEmail()); $loggerId = $login . ' (' . $provider . ': ' . $externalLogin . ')'; if (isset($mail) && $this->mailer($mail)) { $this->logger->info('Mail first-login for ' . $loggerId . ' sent to ' . $user->getInfo()->getEmail()); } else { $this->logger->warn('No Mail was sent for ' . $loggerId); } } catch (\Exception $e) { $this->logger->crit($e); $this->notification()->danger('An unexpected error has occurred, please contact your system administrator'); } } $user = $auth->getUser(); $this->logger->info('User ' . $auth->getUser()->getInfo()->getDisplayName() . ' logged in via ' . $provider); $settings = $user->getSettings('Core'); if (null !== $settings->localization->language) { $basePath = $this->getRequest()->getBasePath(); $ref = preg_replace('~^' . $basePath . '/[a-z]{2}(?=/|$)~', $basePath . '/' . $settings->localization->language, $ref); } return $this->redirect()->toUrl($ref); }
/** * @covers Auth\Options\ModuleOptions::getRole * @covers Auth\Options\ModuleOptions::setRole */ public function testSetGetRole() { $input = 'user'; $this->options->setRole($input); $this->assertEquals($input, $this->options->getRole()); }