diff --git a/webtools/bugzilla/CGI.pl b/webtools/bugzilla/CGI.pl
index 74d383646f76..fa3acb93e6c6 100644
--- a/webtools/bugzilla/CGI.pl
+++ b/webtools/bugzilla/CGI.pl
@@ -260,6 +260,25 @@ sub quietly_check_login() {
+sub CheckEmailSyntax {
+ my ($addr) = (@_);
+ if ($addr !~ /^[^@, ]*@[^@, ]*\.[^@, ]*$/) {
+ print "Content-type: text/html\n\n";
+
+ print "
Invalid e-mail address entered.
\n";
+ print "The e-mail address you entered\n";
+ print "($addr) 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 "Please click back 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 "
Invalid e-mail address entered.
\n";
- print "The e-mail address you entered\n";
- print "($enteredlogin) 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 "Please click back and try again.\n";
- exit;
- }
my $realcryptpwd = PasswordForLogin($::FORM{"Bugzilla_login"});
if (defined $::FORM{"PleaseMailAPassword"}) {
diff --git a/webtools/bugzilla/createaccount.cgi b/webtools/bugzilla/createaccount.cgi
new file mode 100755
index 000000000000..c6bef90cfe78
--- /dev/null
+++ b/webtools/bugzilla/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
+# David Gardiner
+
+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 $login already\n";
+ print "exists. If you have forgotten the password for it, then\n";
+ print "click here and use\n";
+ print "the E-mail me a password button.\n";
+ exit;
+ }
+ DBNameToIdAndCheck($login, 1);
+ print "A bugzilla account for $login has been created. The\n";
+ print "password has been e-mailed to that address. When it is\n";
+ print "received, you may click\n";
+ print "here and log in. Or, you can just go back to\n";
+ print "the top.";
+ 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.
+
+
diff --git a/webtools/bugzilla/query.cgi b/webtools/bugzilla/query.cgi
index b34f87b137ff..38d95589b793 100755
--- a/webtools/bugzilla/query.cgi
+++ b/webtools/bugzilla/query.cgi
@@ -546,4 +546,5 @@ if (defined $::COOKIE{"Bugzilla_login"}) {
}
print "Change your password.
\n";
print "Create a new bug.
\n";
+print "Open a new Bugzilla account
\n";
print "Bug reports
\n";