diff options
Diffstat (limited to 'app/Controller/AuthController.php')
-rw-r--r-- | app/Controller/AuthController.php | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/app/Controller/AuthController.php b/app/Controller/AuthController.php new file mode 100644 index 00000000..598b3ff8 --- /dev/null +++ b/app/Controller/AuthController.php @@ -0,0 +1,83 @@ +<?php + +namespace Kanboard\Controller; + +/** + * Authentication Controller + * + * @package Kanboard\Controller + * @author Frederic Guillot + */ +class AuthController extends BaseController +{ + /** + * Display the form login + * + * @access public + * @param array $values + * @param array $errors + */ + public function login(array $values = array(), array $errors = array()) + { + if ($this->userSession->isLogged()) { + $this->response->redirect($this->helper->url->to('DashboardController', 'show')); + } else { + $this->response->html($this->helper->layout->app('auth/index', array( + 'captcha' => ! empty($values['username']) && $this->userLocking->hasCaptcha($values['username']), + 'errors' => $errors, + 'values' => $values, + 'no_layout' => true, + 'title' => t('Login') + ))); + } + } + + /** + * Check credentials + * + * @access public + */ + public function check() + { + $values = $this->request->getValues(); + $this->sessionStorage->hasRememberMe = ! empty($values['remember_me']); + list($valid, $errors) = $this->authValidator->validateForm($values); + + if ($valid) { + $this->redirectAfterLogin(); + } else { + $this->login($values, $errors); + } + } + + /** + * Logout and destroy session + * + * @access public + */ + public function logout() + { + if (! DISABLE_LOGOUT) { + $this->sessionManager->close(); + $this->response->redirect($this->helper->url->to('AuthController', 'login')); + } else { + $this->response->redirect($this->helper->url->to('AuthController', 'index')); + } + } + + /** + * Redirect the user after the authentication + * + * @access private + */ + private function redirectAfterLogin() + { + if (isset($this->sessionStorage->redirectAfterLogin) && ! empty($this->sessionStorage->redirectAfterLogin) && ! filter_var($this->sessionStorage->redirectAfterLogin, FILTER_VALIDATE_URL)) { + $redirect = $this->sessionStorage->redirectAfterLogin; + unset($this->sessionStorage->redirectAfterLogin); + $this->response->redirect($redirect); + } else { + $this->response->redirect($this->helper->url->to('DashboardController', 'show')); + } + } +} |