* @author Icinga Development Team */ // {{{ICINGA_LICENSE_HEADER}}} # namespace Icinga\Application\Controllers; use \Icinga\Web\Controller\ActionController; use \Icinga\Authentication\Credential; use \Icinga\Authentication\Manager as AuthManager; use \Icinga\Form\Authentication\LoginForm; use \Icinga\Exception\ConfigurationError; /** * Application wide controller for authentication */ class AuthenticationController extends ActionController { /** * This controller handles authentication * * @var bool */ protected $handlesAuthentication = true; /** * This controller modifies the session * * @var bool * * @see \Icinga\Web\Controller\ActionController::$modifiesSession */ protected $modifiesSession = true; /** * Log into the application */ public function loginAction() { $this->replaceLayout = true; $credentials = new Credential(); $this->view->form = new LoginForm(); $this->view->form->setRequest($this->_request); $this->view->title = "Icinga Web Login"; try { $auth = AuthManager::getInstance(null, array( 'writeSession' => $this->modifiesSession )); if ($auth->isAuthenticated()) { $this->redirectNow('index?_render=body'); } if ($this->view->form->isSubmittedAndValid()) { $credentials->setUsername($this->view->form->getValue('username')); $credentials->setPassword($this->view->form->getValue('password')); if (!$auth->authenticate($credentials)) { $this->view->form->getElement('password') ->addError(t('Please provide a valid username and password')); } else { $this->redirectNow('index?_render=body'); } } } catch (ConfigurationError $configError) { $this->view->errorInfo = $configError->getMessage(); } } /** * Log out the current user */ public function logoutAction() { $auth = AuthManager::getInstance(null, array( 'writeSession' => $this->modifiesSession )); $this->replaceLayout = true; $auth->removeAuthorization(); $this->redirect('login'); } } // @codingStandardsIgnoreEnd