diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-08-28 21:45:15 -0400 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-08-28 21:45:15 -0400 |
commit | ff566a149d59ac7f78899911ca892b0193b0888b (patch) | |
tree | dcfacd2dc25a827b7d78f7d55e8f35805f7a5b13 /actions/password.php | |
parent | cf3902d8ac9942f9c92e304e72746bc946f1d783 (diff) |
add session token check to password change
darcs-hash:20080829014515-84dde-bce51f66ba0b3b4347a55a70b2b266b72c242304.gz
Diffstat (limited to 'actions/password.php')
-rw-r--r-- | actions/password.php | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/actions/password.php b/actions/password.php index aef1accdc..90e7db266 100644 --- a/actions/password.php +++ b/actions/password.php @@ -30,10 +30,12 @@ class PasswordAction extends SettingsAction { function show_form($msg=NULL, $success=false) { $user = common_current_user(); $this->form_header(_('Change password'), $msg, $success); + $token = common_session_token(); common_element_start('form', array('method' => 'post', 'id' => 'password', 'action' => common_local_url('password'))); + common_hidden('token', $token); # Users who logged in with OpenID won't have a pwd if ($user->password) { common_password('oldpassword', _('Old password')); @@ -56,8 +58,11 @@ class PasswordAction extends SettingsAction { $newpassword = $this->arg('newpassword'); $confirm = $this->arg('confirm'); - - if (0 != strcmp($newpassword, $confirm)) { + $token = $this->arg('token'); + + if (!$token || $token != common_session_token()) { + $this->show_form(_('There was a problem with your session token. Try again, please.')); + } else if (0 != strcmp($newpassword, $confirm)) { $this->show_form(_('Passwords don\'t match.')); return; } |