diff options
-rw-r--r-- | CGI.pl | 32 | ||||
-rwxr-xr-x | createaccount.cgi | 79 | ||||
-rw-r--r-- | index.html | 3 | ||||
-rwxr-xr-x | query.cgi | 1 |
4 files changed, 102 insertions, 13 deletions
@@ -260,6 +260,25 @@ sub quietly_check_login() { +sub CheckEmailSyntax { + my ($addr) = (@_); + if ($addr !~ /^[^@, ]*@[^@, ]*\.[^@, ]*$/) { + print "Content-type: text/html\n\n"; + + print "<H1>Invalid e-mail address entered.</H1>\n"; + print "The e-mail address you entered\n"; + print "(<b>$addr</b>) didn't match our minimal\n"; + print "syntax checking for a legal email address. A legal\n"; + print "address must contain exactly one '\@', and at least one\n"; + print "'.' after the \@, and may not contain any commas or.\n"; + print "spaces.\n"; + print "<p>Please click <b>back</b> and try again.\n"; + exit; + } +} + + + sub confirm_login { my ($nexturl) = (@_); @@ -272,19 +291,8 @@ sub confirm_login { my $enteredlogin = $::FORM{"Bugzilla_login"}; my $enteredpwd = $::FORM{"Bugzilla_password"}; - if ($enteredlogin !~ /^[^@, ]*@[^@, ]*\.[^@, ]*$/) { - print "Content-type: text/html\n\n"; + CheckEmailSyntax($enteredlogin); - print "<H1>Invalid e-mail address entered.</H1>\n"; - print "The e-mail address you entered\n"; - print "(<b>$enteredlogin</b>) didn't match our minimal\n"; - print "syntax checking for a legal email address. A legal\n"; - print "address must contain exactly one '\@', and at least one\n"; - print "'.' after the \@, and may not contain any commas or.\n"; - print "spaces.\n"; - print "<p>Please click <b>back</b> and try again.\n"; - exit; - } my $realcryptpwd = PasswordForLogin($::FORM{"Bugzilla_login"}); if (defined $::FORM{"PleaseMailAPassword"}) { diff --git a/createaccount.cgi b/createaccount.cgi new file mode 100755 index 000000000..c6bef90cf --- /dev/null +++ b/createaccount.cgi @@ -0,0 +1,79 @@ +#!/usr/bonsaitools/bin/perl -w +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public License +# Version 1.0 (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): Terry Weissman <terry@mozilla.org> +# David Gardiner <david.gardiner@unisa.edu.au> + +use diagnostics; +use strict; + +require "CGI.pl"; + +# Shut up misguided -w warnings about "used only once": + +use vars %::FORM; + +ConnectToDatabase(); + +# Clear out the login cookies. Make people log in again if they create an +# account; otherwise, they'll probably get confused. + +print "Set-Cookie: Bugzilla_login= ; path=/; expires=Sun, 30-Jun-80 00:00:00 GMT +Set-Cookie: Bugzilla_logincookie= ; path=/; expires=Sun, 30-Jun-80 00:00:00 GMT +Set-Cookie: Bugzilla_password= ; path=/; expires=Sun, 30-Jun-80 00:00:00 GMT +Content-type: text/html + +"; + +PutHeader("Create a new bugzilla account"); + +my $login = $::FORM{'login'}; +if (defined $login) { + CheckEmailSyntax($login); + if (DBname_to_id($login) != 0) { + print "A bugzilla account for the name <tt>$login</tt> already\n"; + print "exists. If you have forgotten the password for it, then\n"; + print "<a href=query.cgi?GoAheadAndLogIn>click here</a> and use\n"; + print "the <b>E-mail me a password</b> button.\n"; + exit; + } + DBNameToIdAndCheck($login, 1); + print "A bugzilla account for <tt>$login</tt> has been created. The\n"; + print "password has been e-mailed to that address. When it is\n"; + print "received, you may <a href=query.cgi?GoAheadAndLogIn>click\n"; + print "here</a> and log in. Or, you can just <a href=\"\">go back to\n"; + print "the top</a>."; + exit; +} + +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. + +<FORM method=get> +<table> +<tr> +<td align=right><b>E-mail address:</b></td> +<td><input size=35 name=login></td> +</tr> +</table> +<input type=submit> +}; + diff --git a/index.html b/index.html index a8e36662f..7cef3c1e2 100644 --- a/index.html +++ b/index.html @@ -69,7 +69,8 @@ But it all boils down to a choice of: <br> <a href="query.cgi">Go to the query page to start.</a><br> <a href="enter_bug.cgi">Enter a new bug</a><br> -<a href="reports.cgi">Bug reports</a> +<a href="reports.cgi">Bug reports</a><br> +<a href="createaccount.cgi">Open a new Bugzilla account</a><br> <FORM METHOD=GET ACTION=show_bug.cgi><INPUT TYPE=SUBMIT VALUE="Find"> bug # <INPUT NAME=id SIZE=6></FORM></TD> @@ -546,4 +546,5 @@ if (defined $::COOKIE{"Bugzilla_login"}) { } print "<a href=changepassword.cgi>Change your password.</a><br>\n"; print "<a href=\"enter_bug.cgi\">Create a new bug.</a><br>\n"; +print "<a href=\"createaccount.cgi\">Open a new Bugzilla account</a><br>\n"; print "<a href=\"reports.cgi\">Bug reports</a><br>\n"; |