chomp($full_name);
}
- while (!$password) {
- # trap a few interrupts so we can fix the echo if we get aborted.
- local $SIG{HUP} = \&_create_admin_exit;
- local $SIG{INT} = \&_create_admin_exit;
- local $SIG{QUIT} = \&_create_admin_exit;
- local $SIG{TERM} = \&_create_admin_exit;
-
- system("stty","-echo") unless ON_WINDOWS; # disable input echoing
-
- print get_text('install_admin_get_password') . ' ';
- $password = <STDIN>;
- chomp $password;
- print "\n", get_text('install_admin_get_password2') . ' ';
- my $pass2 = <STDIN>;
- chomp $pass2;
- eval { validate_password($password, $pass2); };
- if ($@) {
- print "\n$@\n";
- undef $password;
- }
- system("stty","echo") unless ON_WINDOWS;
+ if (!$password) {
+ $password = _prompt_for_password(
+ get_text('install_admin_get_password'));
}
my $admin = Bugzilla::User->create({ login_name => $login,
print "\n", get_text('install_admin_created', { user => $user }), "\n";
}
-# This is just in case we get interrupted while getting the admin's password.
-sub _create_admin_exit {
+sub _prompt_for_password {
+ my $prompt = shift;
+
+ my $password;
+ while (!$password) {
+ # trap a few interrupts so we can fix the echo if we get aborted.
+ local $SIG{HUP} = \&_password_prompt_exit;
+ local $SIG{INT} = \&_password_prompt_exit;
+ local $SIG{QUIT} = \&_password_prompt_exit;
+ local $SIG{TERM} = \&_password_prompt_exit;
+
+ system("stty","-echo") unless ON_WINDOWS; # disable input echoing
+
+ print $prompt, ' ';
+ $password = <STDIN>;
+ chomp $password;
+ print "\n", get_text('install_confirm_password'), ' ';
+ my $pass2 = <STDIN>;
+ chomp $pass2;
+ eval { validate_password($password, $pass2); };
+ if ($@) {
+ print "\n$@\n";
+ undef $password;
+ }
+ system("stty","echo") unless ON_WINDOWS;
+ }
+ return $password;
+}
+
+# This is just in case we get interrupted while getting a password.
+sub _password_prompt_exit {
# re-enable input echoing
system("stty","echo") unless ON_WINDOWS;
exit 1;
}
+sub reset_password {
+ my $login = shift;
+ my $user = Bugzilla::User->check($login);
+ my $prompt = "\n" . get_text('install_reset_password', { user => $user });
+ my $password = _prompt_for_password($prompt);
+ $user->set_password($password);
+ $user->update();
+ print "\n", get_text('install_reset_password_done'), "\n";
+}
+
1;
__END__
my %switch;
GetOptions(\%switch, 'help|h|?', 'check-modules', 'no-templates|t',
- 'verbose|v|no-silent', 'make-admin=s');
+ 'verbose|v|no-silent', 'make-admin=s',
+ 'reset-password=s');
# Print the help message if that switch was selected.
pod2usage({-verbose => 1, -exitval => 1}) if $switch{'help'};
Bugzilla::Install::make_admin($switch{'make-admin'}) if $switch{'make-admin'};
Bugzilla::Install::create_admin();
+Bugzilla::Install::reset_password($switch{'reset-password'})
+ if $switch{'reset-password'};
+
###########################################################################
# Create default Product and Classification
###########################################################################
./checksetup.pl [--help|--check-modules]
./checksetup.pl [SCRIPT [--verbose]] [--no-templates|-t]
[--make-admin=user@domain.com]
+ [--reset-password=user@domain.com]
=head1 OPTIONS
in case you accidentally lock yourself out of the Bugzilla administrative
interface.
+=item B<--reset-password>=user@domain.com
+
+Resets the specified user's password. checksetup.pl will prompt you to
+enter a new password for the user.
+
=item B<--no-templates> (B<-t>)
Don't compile the templates at all. Existing compiled templates will
[% ELSIF message_tag == "install_admin_get_password" %]
Enter a password for the administrator account:
- [% ELSIF message_tag == "install_admin_get_password2" %]
- Please retype the password to verify:
-
[% ELSIF message_tag == "install_admin_created" %]
[% user.login FILTER html %] is now set up as an administrator.
[% ELSIF message_tag == "install_column_rename" %]
Renaming column '[% old FILTER html %]' to '[% new FILTER html %]'...
+ [% ELSIF message_tag == "install_confirm_password" %]
+ Please retype the password to verify:
+
[% ELSIF message_tag == "install_default_classification" %]
Creating default classification '[% name FILTER html %]'...
account) to ensure it is set up as you wish - this includes
setting the 'urlbase' option to the correct URL.
+ [% ELSIF message_tag == "install_reset_password" %]
+ Enter a new password for [% user.login FILTER html %]:
+
+ [% ELSIF message_tag == "install_reset_password_done" %]
+ New password set.
+
[% ELSIF message_tag == "install_webservergroup_empty" %]
****************************************************************************
WARNING! You have not entered a value for the "webservergroup" parameter