summaryrefslogtreecommitdiff
path: root/app/Controller/AuthController.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Controller/AuthController.php')
-rw-r--r--app/Controller/AuthController.php83
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'));
+ }
+ }
+}