summaryrefslogtreecommitdiff
path: root/apps/um/controllers/Authenticator.class.php
blob: 0c1bf0c96d3957eaa72c71448bed3b56c87d88ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
require_once('Login.class.php');
require_once('Auth.class.php');

Router::register('auth', 'Authenticator');

class Authenticator extends Controller {
	public function index($routed, $remainder) {
		// 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 = Login::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() {
		Login::logout();
		$this->showView('auth/logout');
	}
	private function maybe_login() {
		$uid = Login::isLoggedIn();
		if ($uid===false) {
			$this->login();
		} else {
			$username = Auth::getInstance($uid)->getName();
			$this->showView('auth/index',
			                array('username'=>$username));
		}
	}
	private function badrequest() {
		$this->showView('auth/badrequest');
	}
}