. */ 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'), NULL, array($msg, $success), array($this, 'show_top')); common_element_start('form', array('method' => 'POST', 'id' => 'password', 'action' => common_local_url('password'))); common_password('oldpassword', _t('Old password')); 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; } if (!common_check_user($user->nickname, $oldpassword)) { $this->show_form(_t('Incorrect old password')); return; } $original = clone($user); $user->password = common_munge_password($newpassword, $user->id); $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); } }