summaryrefslogtreecommitdiff
path: root/actions/login.php
blob: b939362973cc36e5247112a47453d505687b117c (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
58
59
<?php

class LoginAction extends Action {
	
	function handle($args) {
		parent::handle($args);
		if (common_logged_in()) {
			common_user_error(_t('Already logged in.'));
		} else if ($this->arg('METHOD') == 'POST') {
			$this->check_login();
		} else {
			$this->show_form();
		}
	}

	function check_login() {
		# XXX: form token in $_SESSION to prevent XSS
		# XXX: login throttle
		$nickname = $this->arg('nickname');
		$password = $this->arg('password');
		if (common_check_user($nickname, $password)) {
			common_set_user($nickname);
			common_redirect(common_local_url('all',
											 array('nickname' =>
												   $nickname)));
		} else {
			$this->show_form(_t('Incorrect username or password.'));
		}
	}
	
	function show_form($error=NULL) {
		
		common_show_header(_t('Login'));
		if (!is_null($error)) {
			common_element('div', array('class' => 'error'), $msg);
		}
		common_start_element('form', array('method' => 'POST',
										   'id' => 'login',
										   'action' => common_local_url('login')));
		common_element('label', array('for' => 'username'),
					   _t('Name'));
		common_element('input', array('name' => 'username',
									  'type' => 'text',
									  'id' => 'username'));
		common_element('label', array('for' => 'password'),
					   _t('Password'));
		common_element('input', array('name' => 'password',
									  'type' => 'password',									  
									  'id' => 'password'));
		common_element('input', array('name' => 'submit',
									  'type' => 'submit',
									  'id' => 'submit'),
					   _t('Login'));
		common_element('input', array('name' => 'cancel',
									  'type' => 'button',
									  'id' => 'cancel'),
					   _t('Cancel'));
	}
}