From 558994bed534a4c979f6df8c2fba7d8c96c7d073 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Thu, 8 Jan 2009 16:09:46 +0000 Subject: Bug 452519: Fix timezones in emails - Patch by Frédéric Buclin r=wicked a=LpSolit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/Token.pm | 16 +++++++++------- template/en/default/account/cancel-token.txt.tmpl | 2 +- template/en/default/account/email/change-new.txt.tmpl | 5 ++--- template/en/default/account/email/change-old.txt.tmpl | 5 ++--- template/en/default/account/email/confirm-new.html.tmpl | 5 ++--- template/en/default/account/email/request-new.txt.tmpl | 7 +++---- .../default/account/password/forgotten-password.txt.tmpl | 5 ++--- token.cgi | 3 ++- 8 files changed, 23 insertions(+), 25 deletions(-) diff --git a/Bugzilla/Token.pm b/Bugzilla/Token.pm index 157cc0622..313d43212 100644 --- a/Bugzilla/Token.pm +++ b/Bugzilla/Token.pm @@ -74,7 +74,7 @@ sub issue_new_user_account_token { my ($token, $token_ts) = _create_token(undef, 'account', $login_name); $vars->{'email'} = $login_name . Bugzilla->params->{'emailsuffix'}; - $vars->{'token_ts'} = $token_ts; + $vars->{'expiration_ts'} = ctime($token_ts + MAX_TOKEN_AGE * 86400); $vars->{'token'} = $token; my $message; @@ -103,10 +103,7 @@ sub IssueEmailChangeToken { $vars->{'oldemailaddress'} = $old_email . $email_suffix; $vars->{'newemailaddress'} = $new_email . $email_suffix; - - $vars->{'max_token_age'} = MAX_TOKEN_AGE; - $vars->{'token_ts'} = $token_ts; - + $vars->{'expiration_ts'} = ctime($token_ts + MAX_TOKEN_AGE * 86400); $vars->{'token'} = $token; $vars->{'emailaddress'} = $old_email . $email_suffix; @@ -151,8 +148,10 @@ sub IssuePasswordToken { $vars->{'token'} = $token; $vars->{'emailaddress'} = $user->email; - $vars->{'max_token_age'} = MAX_TOKEN_AGE; - $vars->{'token_ts'} = $token_ts; + $vars->{'expiration_ts'} = ctime($token_ts + MAX_TOKEN_AGE * 86400); + # The user is not logged in (else he wouldn't request a new password). + # So we have to pass this information to the template. + $vars->{'timezone'} = $user->timezone; my $message = ""; $template->process("account/password/forgotten-password.txt.tmpl", @@ -233,6 +232,9 @@ sub Cancel { $vars->{'token'} = $token; $vars->{'tokentype'} = $tokentype; $vars->{'issuedate'} = $issuedate; + # The user is probably not logged in. + # So we have to pass this information to the template. + $vars->{'timezone'} = $user->timezone; $vars->{'eventdata'} = $eventdata; $vars->{'cancelaction'} = $cancelaction; diff --git a/template/en/default/account/cancel-token.txt.tmpl b/template/en/default/account/cancel-token.txt.tmpl index 155c44136..6619dedd3 100644 --- a/template/en/default/account/cancel-token.txt.tmpl +++ b/template/en/default/account/cancel-token.txt.tmpl @@ -37,7 +37,7 @@ to [% Param('maintainer') %] if you suspect foul play. Token: [% token %] Token Type: [% tokentype %] User: [% emailaddress %] - Issue Date: [% issuedate %] + Issue Date: [% issuedate FILTER time("%Y-%m-%d %H:%M:%S %Z", timezone) %] Event Data: [% eventdata %] Canceled Because: [% PROCESS cancelactionmessage %] diff --git a/template/en/default/account/email/change-new.txt.tmpl b/template/en/default/account/email/change-new.txt.tmpl index e7f32e8d7..5803b0274 100644 --- a/template/en/default/account/email/change-new.txt.tmpl +++ b/template/en/default/account/email/change-new.txt.tmpl @@ -20,7 +20,6 @@ [% PROCESS global/variables.none.tmpl %] -[% expiration_ts = token_ts + (max_token_age * 86400) %] From: [% Param('mailfrom') %] To: [% emailaddress %] Subject: [% terms.Bugzilla %] Change Email Address Request @@ -38,5 +37,5 @@ this request, visit the following link: [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=cxlem -If you do nothing, the request will lapse after [%+ max_token_age %] days -(on [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]). +If you do nothing, the request will lapse after [% constants.MAX_TOKEN_AGE %] days +(on [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %]). diff --git a/template/en/default/account/email/change-old.txt.tmpl b/template/en/default/account/email/change-old.txt.tmpl index cf00ebbcf..6b7774420 100644 --- a/template/en/default/account/email/change-old.txt.tmpl +++ b/template/en/default/account/email/change-old.txt.tmpl @@ -25,7 +25,6 @@ [% PROCESS global/variables.none.tmpl %] -[% expiration_ts = token_ts + (max_token_age * 86400) %] From: [% Param('mailfrom') %] To: [% emailaddress %] Subject: [% terms.Bugzilla %] Change Email Address Request @@ -43,5 +42,5 @@ this request, visit the following link: [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=cxlem If you do nothing, and [%+ newemailaddress %] confirms this request, -the change will be made permanent after [%+ max_token_age %] days -(on [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]). +the change will be made permanent after [% constants.MAX_TOKEN_AGE %] days +(on [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %]). diff --git a/template/en/default/account/email/confirm-new.html.tmpl b/template/en/default/account/email/confirm-new.html.tmpl index 437c1b758..ed0ff3405 100644 --- a/template/en/default/account/email/confirm-new.html.tmpl +++ b/template/en/default/account/email/confirm-new.html.tmpl @@ -16,7 +16,7 @@ [%# INTERFACE: # token: string. The token to be used in the user account creation. # email: email address of the user account. - # date: creation date of the token. + # expiration_ts: expiration date of the token. #%] [% title = BLOCK %]Create a new user account for '[% email FILTER html %]'[% END %] @@ -24,7 +24,6 @@ title = title onload = "document.forms['confirm_account_form'].realname.focus();" %] -[% expiration_ts = date + (constants.MAX_TOKEN_AGE * 86400) %]
To create your account, you must enter a password in the form below. Your email address and Real Name (if provided) will be shown with @@ -60,7 +59,7 @@

This account will not be created if this form is not completed by - [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]. + [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %].

diff --git a/template/en/default/account/email/request-new.txt.tmpl b/template/en/default/account/email/request-new.txt.tmpl index 36cd94787..c56054b94 100644 --- a/template/en/default/account/email/request-new.txt.tmpl +++ b/template/en/default/account/email/request-new.txt.tmpl @@ -15,13 +15,12 @@ [%# INTERFACE: # token: random string used to authenticate the transaction. - # token_ts: creation date of the token. + # expiration_ts: expiration date of the token. # email: email address of the new account. #%] [% PROCESS global/variables.none.tmpl %] -[% expiration_ts = token_ts + (constants.MAX_TOKEN_AGE * 86400) %] From: [% Param('mailfrom') %] To: [% email %] Subject: [% terms.Bugzilla %]: confirm account creation @@ -31,11 +30,11 @@ X-Bugzilla-Type: admin using your email address ([% email %]). To continue creating an account using this email address, visit the -following link by [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %]: +following link by [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %]: [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=request_new_account -If you did not receive this email before [%+ time2str("%B %o, %Y at %H:%M %Z", expiration_ts) %] or +If you did not receive this email before [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z") %] or you wish to create an account using a different email address you can begin again by going to: diff --git a/template/en/default/account/password/forgotten-password.txt.tmpl b/template/en/default/account/password/forgotten-password.txt.tmpl index f8687cb4d..574975c85 100644 --- a/template/en/default/account/password/forgotten-password.txt.tmpl +++ b/template/en/default/account/password/forgotten-password.txt.tmpl @@ -20,7 +20,6 @@ [% PROCESS global/variables.none.tmpl %] -[% expiration_ts = token_ts + (max_token_age * 86400) %] From: [% Param('mailfrom') %] To: [% emailaddress %] Subject: [% terms.Bugzilla %] Change Password Request @@ -36,6 +35,6 @@ this request, visit the following link: [%+ urlbase %]token.cgi?t=[% token FILTER url_quote %]&a=cxlpw -If you do nothing, the request will lapse after [%+ max_token_age +%] days (at -precisely [%+ time2str("%H:%M on the %o of %B, %Y", expiration_ts) -%]) or when you +If you do nothing, the request will lapse after [% constants.MAX_TOKEN_AGE %] days +(on [% expiration_ts FILTER time("%B %e, %Y at %H:%M %Z", timezone) %]) or when you log in successfully. diff --git a/token.cgi b/token.cgi index 34a017376..535380042 100755 --- a/token.cgi +++ b/token.cgi @@ -37,6 +37,7 @@ use Bugzilla::Error; use Bugzilla::Token; use Bugzilla::User; +use Date::Format; use Date::Parse; my $dbh = Bugzilla->dbh; @@ -351,7 +352,7 @@ sub request_create_account { my (undef, $date, $login_name) = Bugzilla::Token::GetTokenData($token); $vars->{'token'} = $token; $vars->{'email'} = $login_name . Bugzilla->params->{'emailsuffix'}; - $vars->{'date'} = str2time($date); + $vars->{'expiration_ts'} = ctime(str2time($date) + MAX_TOKEN_AGE * 86400); # When 'ssl' equals 'always' or 'authenticated sessions', # we want this form to always be over SSL. -- cgit v1.2.3-24-g4f1b