/** * Login with username and password * * @return \Zend\Http\Response|ViewModel */ public function indexAction() { if ($this->auth->hasIdentity()) { return $this->redirect()->toRoute('lang'); } $viewModel = new ViewModel(); $services = $this->serviceLocator; /* @var $loginForm Login */ $loginForm = $this->forms[self::LOGIN]; /* @var $registerForm Register */ $registerForm = $this->forms[self::REGISTER]; /* @var $request \Zend\Http\Request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $this->params()->fromPost(); $adapter = $services->get('Auth/Adapter/UserLogin'); // inject suffixes via shared Events $loginSuffix = ''; // @TODO: replace this by the Plugin LoginFilter $e = $this->getEvent(); $loginSuffixResponseCollection = $this->getEventManager()->trigger('login.getSuffix', $e); if (!$loginSuffixResponseCollection->isEmpty()) { $loginSuffix = $loginSuffixResponseCollection->last(); } $loginForm->setData($data); if (array_key_exists('credentials', $data) && array_key_exists('login', $data['credentials']) && array_key_exists('credential', $data['credentials'])) { $adapter->setIdentity($data['credentials']['login'] . $loginSuffix)->setCredential($data['credentials']['credential']); } $auth = $this->auth; $result = $auth->authenticate($adapter); if ($result->isValid()) { $user = $auth->getUser(); $language = $services->get('Core/Locale')->detectLanguage($request, $user); $this->logger->info('User ' . $user->login . ' logged in'); $ref = $this->params()->fromQuery('ref', false); if ($ref) { $ref = urldecode($ref); $url = preg_replace('~/[a-z]{2}(/|$)~', '/' . $language . '$1', $ref); $url = $request->getBasePath() . $url; } else { $urlHelper = $services->get('ViewHelperManager')->get('url'); $url = $urlHelper('lang', array('lang' => $language)); } $this->notification()->success('You are now logged in.'); return $this->redirect()->toUrl($url); } else { $loginName = $data['credentials']['login']; if (!empty($loginSuffix)) { $loginName = $loginName . ' (' . $loginName . $loginSuffix . ')'; } $this->logger->info('Failed to authenticate User ' . $loginName); $this->notification()->danger('Authentication failed.'); } } $ref = $this->params()->fromQuery('ref', false); if ($ref) { $req = $this->params()->fromQuery('req', false); if ($req) { $this->getResponse()->setStatusCode(Response::STATUS_CODE_401); $viewModel->setVariable('required', true); } $viewModel->setVariable('ref', $ref); } $allowRegister = $this->options->getEnableRegistration(); $allowResetPassword = $this->options->getEnableResetPassword(); if (isset($allowRegister)) { $viewModel->setVariables(['allowRegister' => $allowRegister, 'allowResetPassword' => $allowResetPassword]); } $viewModel->setVariable('loginForm', $loginForm); $viewModel->setVariable('registerForm', $registerForm); /* @deprecated use loginForm instead of form in your view scripts */ $viewModel->setVariable('form', $loginForm); return $viewModel; }
/** * Checks, if a user is logged in * * @return bool */ public function isLoggedIn() { return $this->authenticationService->hasIdentity(); }
/** * Login with username and password */ public function indexAction() { if ($this->auth->hasIdentity()) { return $this->redirect()->toRoute('lang'); } $viewModel = new ViewModel(); $services = $this->getServiceLocator(); $form = $this->loginForm; if ($this->request->isPost()) { $data = $this->params()->fromPost(); $adapter = $services->get('Auth/Adapter/UserLogin'); // inject suffixes via shared Events $loginSuffix = ''; // @TODO: replace this by the Plugin LoginFilter $e = $this->getEvent(); $loginSuffixResponseCollection = $this->getEventManager()->trigger('login.getSuffix', $e); if (!$loginSuffixResponseCollection->isEmpty()) { $loginSuffix = $loginSuffixResponseCollection->last(); } $form->setData($data); if (array_key_exists('credentials', $data) && array_key_exists('login', $data['credentials']) && array_key_exists('credential', $data['credentials'])) { $adapter->setIdentity($data['credentials']['login'] . $loginSuffix)->setCredential($data['credentials']['credential']); } $auth = $this->auth; $result = $auth->authenticate($adapter); if ($result->isValid()) { $user = $auth->getUser(); $settings = $user->getSettings('Core'); $language = $settings->localization->language; if (!$language) { $headers = $this->getRequest()->getHeaders(); if ($headers->has('Accept-Language')) { $locales = $headers->get('Accept-Language')->getPrioritized(); $language = $locales[0]->type; } else { $language = 'en'; } } $this->logger->info('User ' . $user->login . ' logged in'); $ref = $this->params()->fromQuery('ref', false); if ($ref) { $ref = urldecode($ref); $url = preg_replace('~/[a-z]{2}(/|$)~', '/' . $language . '$1', $ref); $url = $this->getRequest()->getBasePath() . $url; } else { $urlHelper = $services->get('ViewHelperManager')->get('url'); $url = $urlHelper('lang', array('lang' => $language)); } $this->notification()->success('You are now logged in.'); return $this->redirect()->toUrl($url); } else { $databaseName = ''; $config = $services->get('config'); if (array_key_exists('database', $config) && array_key_exists('databaseName', $config['database'])) { $databaseName = $config['database']['databaseName']; } // update for Doctrine if (empty($databaseName) && array_key_exists('doctrine', $config) && array_key_exists('configuration', $config['doctrine']) && array_key_exists('odm_default', $config['doctrine']['configuration']) && array_key_exists('default_db', $config['doctrine']['configuration']['odm_default'])) { $databaseName = $config['doctrine']['configuration']['odm_default']['default_db']; } $loginName = $data['credentials']['login']; if (!empty($loginSuffix)) { $loginName = $loginName . ' (' . $loginName . $loginSuffix . ')'; } $this->logger->info('Failed to authenticate User ' . $loginName . (empty($databaseName) ? '' : ', Database-Name: ' . $databaseName)); $this->notification()->danger('Authentication failed.'); } } $ref = $this->params()->fromQuery('ref', false); if ($ref) { $req = $this->params()->fromQuery('req', false); if ($req) { $this->getResponse()->setStatusCode(403); $viewModel->setVariable('required', true); } $viewModel->setVariable('ref', $ref); } $allowRegister = $services->get('controllerPluginManager')->get('config')->get('allowRegister'); if (isset($allowRegister)) { $viewModel->setVariable('allowRegister', $allowRegister); } $viewModel->setVariable('form', $form); return $viewModel; }