Exemplo n.º 1
0
 /**
  * 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);
 }
Exemplo n.º 2
0
 /**
  * @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());
 }