diff options
Diffstat (limited to 'src/controllers/Auth.class.php')
-rw-r--r-- | src/controllers/Auth.class.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/controllers/Auth.class.php b/src/controllers/Auth.class.php new file mode 100644 index 0000000..86bd83f --- /dev/null +++ b/src/controllers/Auth.class.php @@ -0,0 +1,57 @@ +<?php + +Router::register('auth', 'Auth'); + +class Auth extends Controller { + public function index($routed, $remainder) { + // So if $_POST['action'] isn't set, it will trip on '', which + // is great, so we don't have to handle GET and PUT separately. + @$action = $_POST['action']; + switch ($action) { + case 'login' : $this->login(); break; + case 'logout': $this->logout(); break; + case '' : $this->maybe_login(); break; + default : $this->badrequest(); break; + } + } + private function login() { + $username = ''; + $password = ''; + + $login = -1; + if ( isset($_POST['username']) && isset($_POST['password'])) { + $username = $_POST['username']; + $password = $_POST['password']; + $login = $mm->login($username, $password); + } + + $vars = array(); + $vars['login_code'] = $login; + $vars['username'] = $username; + $vars['password'] = $password; + if (isset($_POST['url'])) { + $vars['url'] = $_POST['url']; + } + + $this->showView('auth/login', $vars); + } + private function logout() { + global $mm; + $mm->logout(); + $this->showView('auth/logout'); + } + private function maybe_login() { + global $mm; + $uid = $mm->isLoggedIn(); + if ($uid===false) { + $this->login(); + } else { + $username = $mm->getUsername($uid); + $this->showView('auth/index', + array('username'=>$username)); + } + } + private function badrequest() { + $this->showView('auth/badrequest'); + } +} |