From cb114a086e9d68706f326adcc30b149fb06170d1 Mon Sep 17 00:00:00 2001 From: Koosha Khajeh Moogahi Date: Fri, 18 May 2012 16:36:12 +0200 Subject: Bug 752303: It is no longer possible to cancel an email address change when this one has already been confirmed r/a=LpSolit --- token.cgi | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'token.cgi') diff --git a/token.cgi b/token.cgi index 5f647edb3..9a6a0de88 100755 --- a/token.cgi +++ b/token.cgi @@ -193,7 +193,6 @@ sub confirmChangeEmail { sub changeEmail { my ($userid, $eventdata, $token) = @_; my $dbh = Bugzilla->dbh; - my ($old_email, $new_email) = split(/:/,$eventdata); # Check the user entered the correct old email address @@ -208,21 +207,15 @@ sub changeEmail { ThrowUserError("account_exists", { email => $new_email } ); } - # Update the user's login name in the profiles table and delete the token - # from the tokens table. $dbh->bz_start_transaction(); - $dbh->do(q{UPDATE profiles - SET login_name = ? - WHERE userid = ?}, - undef, ($new_email, $userid)); + my $user = Bugzilla::User->check({ id => $userid }); + # Update the user's login name in the profiles table. + $user->set_login($new_email); + $user->update({ keep_session => 1, keep_tokens => 1 }); delete_token($token); $dbh->do(q{DELETE FROM tokens WHERE userid = ? AND tokentype = 'emailnew'}, undef, $userid); - # The email address has been changed, so we need to rederive the groups - my $user = new Bugzilla::User($userid); - $user->derive_regexp_groups; - $dbh->bz_commit_transaction(); # Return HTTP response headers. @@ -250,9 +243,7 @@ sub cancelChangeEmail { # check to see if it has been altered if ($user->login ne $old_email) { $user->set_login($old_email); - $user->update(); - # email has changed, so rederive groups - $user->derive_regexp_groups; + $user->update({ keep_session => 1 }); $vars->{'message'} = "email_change_canceled_reinstated"; } -- cgit v1.2.3-24-g4f1b