X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fpassword.php;h=3481ad33bb482bb3805a50d426e3496e4218c75a;hb=4aedce6864eb27a0c37b3dcae22fee0aa16ae537;hp=3fd94b66ad7b486784d4d3b98e41a91f5857a4e5;hpb=3803cf2153091c4f319c379c3ac24cc8fc844b0a;p=quix0rs-gnu-social.git diff --git a/actions/password.php b/actions/password.php index 3fd94b66ad..3481ad33bb 100644 --- a/actions/password.php +++ b/actions/password.php @@ -1,58 +1,68 @@ . */ -if (!defined('LACONICA')) { exit(1) } +if (!defined('LACONICA')) { exit(1); } + +require_once(INSTALLDIR.'/lib/settingsaction.php'); class PasswordAction extends SettingsAction { + + function show_top($arr) { + $msg = $arr[0]; + $success = $arr[1]; + if ($msg) { + $this->message($msg, $success); + } else { + common_element('div', 'instructions', + _t('You can change your password here. Choose a good one!')); + } + $this->settings_menu(); + } function show_form($msg=NULL, $success=false) { - common_show_header(_t('Change password')); - $this->settings_menu(); - $this->message($msg, $success); - common_start_element('form', array('method' => 'POST', + common_show_header(_t('Change password'), NULL, + array($msg, $success), array($this, 'show_top')); + common_element_start('form', array('method' => 'POST', 'id' => 'password', - 'action' => + 'action' => common_local_url('password'))); common_password('oldpassword', _t('Old password')); - common_password('newpassword', _t('New password')); - common_password('confirm', _t('Confirm')); - common_element('input', array('name' => 'submit', - 'type' => 'submit', - 'id' => 'submit'), - _t('Login')); - common_element('input', array('name' => 'cancel', - 'type' => 'button', - 'id' => 'cancel'), - _t('Cancel')); + common_password('newpassword', _t('New password'), + _t('6 or more characters')); + common_password('confirm', _t('Confirm'), + _t('same as password above')); + common_submit('submit', _t('Change')); + common_element_end('form'); + common_show_footer(); } - + function handle_post() { $user = common_current_user(); assert(!is_null($user)); # should already be checked - + # FIXME: scrub input $oldpassword = $this->arg('oldpassword'); $newpassword = $this->arg('newpassword'); $confirm = $this->arg('confirm'); - + if (0 != strcmp($newpassword, $confirm)) { $this->show_form(_t('Passwords don\'t match')); return; @@ -62,14 +72,22 @@ class PasswordAction extends SettingsAction { $this->show_form(_t('Incorrect old password')); return; } - + + $original = clone($user); + $user->password = common_munge_password($newpassword, $user->id); - - if (!$user->update()) { + + $val = $user->validate(); + if ($val !== TRUE) { + $this->show_form(_t('Error saving user; invalid.')); + return; + } + + if (!$user->update($original)) { common_server_error(_t('Can\'t save new password.')); return; } - + $this->show_form(_t('Password saved'), true); } } \ No newline at end of file