diff options
-rw-r--r-- | CGI.pl | 13 | ||||
-rwxr-xr-x | createaccount.cgi | 97 | ||||
-rw-r--r-- | template/default/admin/account_created.tmpl | 37 | ||||
-rw-r--r-- | template/default/admin/account_exists.tmpl | 33 | ||||
-rw-r--r-- | template/default/admin/create_account.tmpl | 57 |
5 files changed, 182 insertions, 55 deletions
@@ -747,11 +747,6 @@ sub MailPassword { open SENDMAIL, "|/usr/lib/sendmail -t"; print SENDMAIL $msg; close SENDMAIL; - - print "The password for the e-mail address\n"; - print "$login has been e-mailed to that address.\n"; - print "<p>When the e-mail arrives, you can click <b>Back</b>\n"; - print "and enter your password in the form there.\n"; } @@ -791,9 +786,17 @@ sub confirm_login { # into the database, and email their password to them. if ( defined $::FORM{"PleaseMailAPassword"} && !$userid ) { my $password = InsertNewUser($enteredlogin, ""); + # There's a template for this - account_created.tmpl - but + # it's easier to wait to use it until templatisation has progressed + # further; we want to avoid sprinkling multiple copies of the + # template setup code everywhere - Gerv. print "Content-Type: text/html\n\n"; PutHeader("Account Created"); MailPassword($enteredlogin, $password); + print "The password for the e-mail address\n"; + print "$enteredlogin has been e-mailed to that address.\n"; + print "<p>When the e-mail arrives, you can click <b>Back</b>\n"; + print "and enter your password in the form there.\n"; PutFooter(); exit; } diff --git a/createaccount.cgi b/createaccount.cgi index 839b81fb3..86a994483 100755 --- a/createaccount.cgi +++ b/createaccount.cgi @@ -22,6 +22,7 @@ # David Gardiner <david.gardiner@unisa.edu.au> # Joe Robins <jmrobins@tgix.com> # Christopher Aillon <christopher@aillon.com> +# Gervase Markham <gerv@gerv.net> use diagnostics; use strict; @@ -31,76 +32,72 @@ use lib qw(.); require "CGI.pl"; # Shut up misguided -w warnings about "used only once": - use vars %::FORM; -ConnectToDatabase(); +# Use the template toolkit (http://www.template-toolkit.org/) +use Template; -# Clear out the login cookies. Make people log in again if they create an -# account; otherwise, they'll probably get confused. +# Create the global template object that processes templates +my $template = Template->new( +{ + # Colon-separated list of directories containing templates. + INCLUDE_PATH => "template/custom:template/default", + RELATIVE => 1, + PRE_CHOMP => 1, +}); -my $cookiepath = Param("cookiepath"); -print "Set-Cookie: Bugzilla_login= ; path=$cookiepath; expires=Sun, 30-Jun-80 00:00:00 GMT -Set-Cookie: Bugzilla_logincookie= ; path=$cookiepath; expires=Sun, 30-Jun-80 00:00:00 GMT -Content-type: text/html +# Define the global variables and functions that will be passed to the UI +# template. +my $vars = +{ + 'Param' => \&Param, + 'PerformSubsts' => \&PerformSubsts, +}; -"; +ConnectToDatabase(); # If we're using LDAP for login, then we can't create a new account here. if(Param('useLDAP')) { - PutHeader("Can't create LDAP accounts"); - print "This site is using LDAP for authentication. Please contact an LDAP "; - print "administrator to get a new account created.\n"; + DisplayError("This site is using LDAP for authentication. Please contact + an LDAP administrator to get a new account created.", + "Can't create LDAP accounts"); PutFooter(); exit; } +# Clear out the login cookies. Make people log in again if they create an +# account; otherwise, they'll probably get confused. +my $cookiepath = Param("cookiepath"); +print "Set-Cookie: Bugzilla_login= ; path=$cookiepath; expires=Sun, 30-Jun-80 00:00:00 GMT +Set-Cookie: Bugzilla_logincookie= ; path=$cookiepath; expires=Sun, 30-Jun-80 00:00:00 GMT\n"; + +print "Content-Type: text/html\n\n"; + my $login = $::FORM{'login'}; my $realname = trim($::FORM{'realname'}); -if (defined $login) { + +if (defined($login)) { + # We've been asked to create an account. CheckEmailSyntax($login); + $vars->{'login'} = $login; + if (DBname_to_id($login) != 0) { - PutHeader("Account Exists"); - print qq| - <form method="get" action="token.cgi"> - <input type="hidden" name="a" value="reqpw"> - <input type="hidden" name="loginname" value="$login"> - A Bugzilla account for <tt>$login</tt> already exists. If you - are the account holder and have forgotten your password, - <input type="submit" value="submit a request to change it">. - </form> - |; - PutFooter(); + # Account already exists + $template->process("admin/account_exists.tmpl", $vars) + || DisplayError("Template process failed: " . $template->error()); exit; } - PutHeader("Account created"); + + # Create account my $password = InsertNewUser($login, $realname); MailPassword($login, $password); - print " You can also <a href=query.cgi?GoAheadAndLogIn>click\n"; - print "here</a> to log in for the first time."; - PutFooter(); + + $template->process("admin/account_created.tmpl", $vars) + || DisplayError("Template process failed: " . $template->error()); exit; } -PutHeader("Create a new bugzilla account"); -print q{ -To create a bugzilla account, all that you need to do is to enter a -legitimate e-mail address. The account will be created, and its -password will be mailed to you. Optionally you may enter your real name -as well. - -<FORM method=get> -<table> -<tr> -<td align=right><b>E-mail address:</b></td> -<td><input size=35 name=login>}.Param('emailsuffix').q{</td> -</tr> -<tr> -<td align=right><b>Real name:</b></td> -<td><input size=35 name=realname></td> -</tr> -</table> -<input type="submit" value="Create Account"> -}; - -PutFooter(); +# Show the standard "would you like to create an account?" form. +$template->process("admin/create_account.tmpl", $vars) + || DisplayError("Template process failed: " . $template->error()) + && exit; diff --git a/template/default/admin/account_created.tmpl b/template/default/admin/account_created.tmpl new file mode 100644 index 000000000..f104eb0ac --- /dev/null +++ b/template/default/admin/account_created.tmpl @@ -0,0 +1,37 @@ +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Gervase Markham <gerv@gerv.net> + #%] + +[% INCLUDE global/header + title = "Account Created" +%] + +<p> + A new account, + <tt>[% login %]</tt>, + has been created and a randomly-generated password has been e-mailed + to that address. +</p> + +<p> + When the e-mail arrives, + <a href="query.cgi?GoAheadAndLogIn=1">log in here</a>. +</p> + +[% INCLUDE global/footer %] diff --git a/template/default/admin/account_exists.tmpl b/template/default/admin/account_exists.tmpl new file mode 100644 index 000000000..0f1882b42 --- /dev/null +++ b/template/default/admin/account_exists.tmpl @@ -0,0 +1,33 @@ +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Gervase Markham <gerv@gerv.net> + #%] + +[% INCLUDE global/header + title = "Account Exists" +%] + +<form method="get" action="token.cgi"> + <input type="hidden" name="a" value="reqpw" /> + <input type="hidden" name="loginname" value="[% login %]" /> + A Bugzilla account for <tt>[% login %]</tt> already exists. If you + are the account holder and have forgotten your password, + <input type="submit" value="submit a request to change it" />. +</form> + +[% INCLUDE global/footer %] diff --git a/template/default/admin/create_account.tmpl b/template/default/admin/create_account.tmpl new file mode 100644 index 000000000..60effdf61 --- /dev/null +++ b/template/default/admin/create_account.tmpl @@ -0,0 +1,57 @@ +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Gervase Markham <gerv@gerv.net> + #%] + +[% INCLUDE global/header + title = "Create a new Bugzilla account" +%] + +<p> + To create a Bugzilla account, all that you need to do is to enter a + legitimate e-mail address. The account will be created, and its + password will be mailed to you. Optionally you may enter your real name + as well. +</p> + +<form method="get" action="createaccount.cgi"> + <table> + <tr> + <td align="right"> + <b>E-mail address:</b> + </td> + <td> + <input size="35" name="login" /> + [% Param('emailsuffix') %] + </td> + </tr> + + <tr> + <td align="right"> + <b>Real name:</b> + </td> + <td> + <input size="35" name="realname" /> + </td> + </tr> + </table> + <br /> + <input type="submit" value="Create Account" /> +</form> + +[% INCLUDE global/footer %] |