* @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 $requiresAuthentication = false; /** * This controller modifies the session * * @var bool * * @see \Icinga\Web\Controller\ActionController::$modifiesSession */ protected $modifiesSession = true; /** * Log into the application */ public function loginAction() { $credentials = new Credential(); $this->_helper->layout->setLayout('inline'); $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 { $redirectUrl = $this->_request->getParam('redirect'); if ($redirectUrl == null) { $this->redirectNow('index?_render=body'); } else { $this->redirectNow($redirectUrl); } } } } catch (ConfigurationError $configError) { $this->view->errorInfo = $configError->getMessage(); } } /** * Log out the current user */ public function logoutAction() { $this->_helper->layout->setLayout('inline'); $auth = AuthManager::getInstance(null, array( 'writeSession' => $this->modifiesSession )); $auth->removeAuthorization(); $this->redirectToLogin(); } } // @codingStandardsIgnoreEnd