%# BEGIN BPS TAGGED BLOCK {{{ %# %# COPYRIGHT: %# %# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC %# <jesse@bestpractical.com> %# %# (Except where explicitly superseded by other copyright notices) %# %# %# LICENSE: %# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. %# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. %# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. %# %# %# CONTRIBUTION SUBMISSION POLICY: %# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) %# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that %# you are the copyright holder for those contributions and you grant %# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} <& /Elements/Header, Title => $title &>
% if ( RT::Handle::cmp_version($RT::VERSION, '5.0.0') >= 0 ) { <& /Elements/ListActions, actions => \@actions &> % my $title_box_title; % if ( $Mode eq 'create' ) { % $title_box_title = loc("Enter your email address to create a new account"); % } % else { % $title_box_title = loc("Enter your email address to reset your password"); % } <&| /Widgets/TitleBox, title => $title_box_title, hideable => 0, content_class => 'mx-auto col-12', class => 'text-center' &>
% if ( $Mode eq 'reset' ) {

<&|/l&>RT can send you an email with a link that will allow you to reset your password.

% }
<&|/l&>Email address:
<&|/l&>Cancel
% } % else {

# <%$title%>

<& /Elements/ListActions, actions => \@actions &>

% if ( $Mode eq 'create' ) { <&|/l&>Enter your email address to create a new account. % } else { <&|/l&>RT can send you an email with a link that will allow you to reset your password. % } <&|/l&>Email address: <&|/l&>Back to Login % }

<& /Elements/Footer, Menu => 0 &> <%INIT> my @actions; my $title = loc("Reset your password"); if ( $Mode eq 'create' ) { $title = loc("Create account"); } if ($ARGS{'Email'}) { my $u = RT::User->new($RT::SystemUser); $u->LoadByCols(EmailAddress => $ARGS{'Email'}); # Do not allow password reset if this page is suppose to be hidden return if RT->Config->Get('DisableResetPasswordOnLogin'); # If the user exists and has a password and is not disabled then they can always reset their password if ($u->id and $u->HasPassword and !$u->Disabled) { my ($status, $msg) = RT::Extension::ResetPassword::CreateTokenAndResetPassword($u); if ($status) { push @actions, loc("RT has sent you an email message with instructions about how to reset your password"); RT->Logger->info("Password reset token send to " . $u->EmailAddress); } else { push @actions, loc("Failed to send password reset token, please contact your RT administrator."); RT->Logger->error("Failed to send password reset token to " . $u->EmailAddress . ": $msg"); } } # Disabled users do not get to reset their passwords elsif ($u->id and $u->Disabled) { push @actions, loc("You can't reset your password because your user is disabled."); RT->Logger->warning("Disabled user " . $u->Name . " attempted to reset password"); } # If the user exists but does not have a password value then we need to consult the config flag elsif ($u->id) { if ( RT::Config->Get('AllowUsersWithoutPassword') ) { my ($status, $msg) = RT::Extension::ResetPassword::CreateTokenAndResetPassword($u); if ($status) { push @actions, loc("RT has sent you an email message with instructions about how to reset your password"); RT->Logger->info("Password reset token send to " . $u->EmailAddress); } else { push @actions, loc("Unable to send new password email, contact your RT administrator for more assistance"); RT->Logger->error("Failed to send password reset token to " . $u->EmailAddress . ": $msg"); } } else { push @actions, loc("Unable to send new password email, contact your RT administrator for more assistance"); RT->Logger->warning("User " . $u->Name . " attempted to reset their password without having an existing password"); } } # If the user does not exists check if users are allowed to be created via this page else { if ( RT::Config->Get('CreateNewUserAndSetPassword') ) { my ($status, $msg) = $u->Create( Privileged => RT::Config->Get('CreateNewUserAsPrivileged') || 0, EmailAddress => $ARGS{'Email'}, ); RT::Logger->error($msg) unless $status; ($status, $msg) = RT::Extension::ResetPassword::CreateTokenAndResetPassword($u); if ($status) { push @actions, loc("RT has sent you an email message with instructions about how to reset your password"); RT->Logger->info("Password reset token send to " . $u->EmailAddress); } else { push @actions, loc("Unable to send new password email, contact your RT administrator for more assistance"); RT->Logger->error("Failed to send password reset token to " . $u->EmailAddress . ": $msg"); } } else { push @actions, loc("Unable to send new password email, contact your RT administrator for more assistance"); RT->Logger->warning("Password reset attempted for non-existent user " . $ARGS{'Email'}); } } if(RT->Config->Get("HidePasswordResetErrors")) { pop @actions; push @actions, loc("RT has sent you an email message with instructions about how to reset your password"); } } <%ARGS> $Mode => 'reset'