class LoginAction extends Action {
+ function is_readonly() {
+ return true;
+ }
+
function handle($args) {
parent::handle($args);
if (common_is_real_login()) {
- common_user_error(_t('Already logged in.'));
+ common_user_error(_('Already logged in.'));
} else if ($_SERVER['REQUEST_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');
- $user = common_check_user($nickname, $password);
-
- if (!$user) {
- $this->show_form(_t('Incorrect username or password.'));
+ if (common_check_user($nickname, $password)) {
+ # success!
+ if (!common_set_user($nickname)) {
+ common_server_error(_('Error setting user.'));
+ return;
+ }
+ common_real_login(true);
+ if ($this->boolean('rememberme')) {
+ common_debug('Adding rememberme cookie for ' . $nickname);
+ common_rememberme();
+ }
+ # success!
+ $url = common_get_returnto();
+ if ($url) {
+ # We don't have to return to it again
+ common_set_returnto(NULL);
+ } else {
+ $url = common_local_url('all',
+ array('nickname' =>
+ $nickname));
+ }
+ common_redirect($url);
+ } else {
+ $this->show_form(_('Incorrect username or password.'));
return;
}
-
+
# success!
if (!common_set_user($user)) {
- common_server_error(_t('Error setting user.'));
+ common_server_error(_('Error setting user.'));
return;
}
-
+
common_real_login(true);
-
+
if ($this->boolean('rememberme')) {
common_debug('Adding rememberme cookie for ' . $nickname);
common_rememberme($user);
}
function show_form($error=NULL) {
- common_show_header(_t('Login'), NULL, $error, array($this, 'show_top'));
+ common_show_header(_('Login'), NULL, $error, array($this, 'show_top'));
common_element_start('form', array('method' => 'post',
'id' => 'login',
'action' => common_local_url('login')));
- common_input('nickname', _t('Nickname'));
- common_password('password', _t('Password'));
- common_checkbox('rememberme', _t('Remember me'), false,
- _t('Automatically login in the future; ' .
+ common_input('nickname', _('Nickname'));
+ common_password('password', _('Password'));
+ common_checkbox('rememberme', _('Remember me'), false,
+ _('Automatically login in the future; ' .
'not for shared computers!'));
- common_submit('submit', _t('Login'));
+ common_submit('submit', _('Login'));
common_element_end('form');
common_element_start('p');
common_element('a', array('href' => common_local_url('recoverpassword')),
- _t('Lost or forgotten password?'));
+ _('Lost or forgotten password?'));
common_element_end('p');
common_show_footer();
}
{
# rememberme logins have to reauthenticate before
# changing any profile settings (cookie-stealing protection)
- return _t('For security reasons, ' .
- 'please re-enter your ' .
- 'user name and password ' .
- 'before changing your settings. ');
+ return _('For security reasons, please re-enter your ' .
+ 'user name and password ' .
+ 'before changing your settings.');
} else {
- return _t('Login with your username and password. ' .
- 'Don\'t have a username yet? ' .
- '[Register](%%action.register%%) a new account, or ' .
- 'try [OpenID](%%action.openidlogin%%). ');
+ return _('Login with your username and password. ' .
+ 'Don\'t have a username yet? ' .
+ '[Register](%%action.register%%) a new account, or ' .
+ 'try [OpenID](%%action.openidlogin%%). ');
}
}
}
}
}
-#
\ No newline at end of file