createaccount.cgi 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/env perl -wT
  2. # -*- Mode: perl; indent-tabs-mode: nil -*-
  3. #
  4. # The contents of this file are subject to the Mozilla Public
  5. # License Version 1.1 (the "License"); you may not use this file
  6. # except in compliance with the License. You may obtain a copy of
  7. # the License at http://www.mozilla.org/MPL/
  8. #
  9. # Software distributed under the License is distributed on an "AS
  10. # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  11. # implied. See the License for the specific language governing
  12. # rights and limitations under the License.
  13. #
  14. # The Original Code is the Bugzilla Bug Tracking System.
  15. #
  16. # The Initial Developer of the Original Code is Netscape Communications
  17. # Corporation. Portions created by Netscape are
  18. # Copyright (C) 1998 Netscape Communications Corporation. All
  19. # Rights Reserved.
  20. #
  21. # Contributor(s): Terry Weissman <terry@mozilla.org>
  22. # David Gardiner <david.gardiner@unisa.edu.au>
  23. # Joe Robins <jmrobins@tgix.com>
  24. # Christopher Aillon <christopher@aillon.com>
  25. # Gervase Markham <gerv@gerv.net>
  26. use strict;
  27. use lib qw(. lib);
  28. use Bugzilla;
  29. use Bugzilla::Constants;
  30. use Bugzilla::Error;
  31. use Bugzilla::User;
  32. use Bugzilla::BugMail;
  33. use Bugzilla::Util;
  34. # Just in case someone already has an account, let them get the correct footer
  35. # on an error message. The user is logged out just after the account is
  36. # actually created.
  37. Bugzilla->login(LOGIN_OPTIONAL);
  38. my $dbh = Bugzilla->dbh;
  39. my $cgi = Bugzilla->cgi;
  40. my $template = Bugzilla->template;
  41. my $vars = {};
  42. $vars->{'doc_section'} = 'myaccount.html';
  43. print $cgi->header();
  44. # If we're using LDAP for login, then we can't create a new account here.
  45. unless (Bugzilla->user->authorizer->user_can_create_account) {
  46. ThrowUserError("auth_cant_create_account");
  47. }
  48. my $createexp = Bugzilla->params->{'createemailregexp'};
  49. unless ($createexp) {
  50. ThrowUserError("account_creation_disabled");
  51. }
  52. my $login = $cgi->param('login');
  53. if (defined($login)) {
  54. $login = Bugzilla::User->check_login_name_for_creation($login);
  55. $vars->{'login'} = $login;
  56. if ($login !~ /$createexp/) {
  57. ThrowUserError("account_creation_restricted");
  58. }
  59. # Create and send a token for this new account.
  60. Bugzilla::Token::issue_new_user_account_token($login);
  61. $template->process("account/created.html.tmpl", $vars)
  62. || ThrowTemplateError($template->error());
  63. exit;
  64. }
  65. # Show the standard "would you like to create an account?" form.
  66. $template->process("account/create.html.tmpl", $vars)
  67. || ThrowTemplateError($template->error());