<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rt-wiki.bestpractical.com/index.php?action=history&amp;feed=atom&amp;title=PasswordReminder</id>
	<title>PasswordReminder - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rt-wiki.bestpractical.com/index.php?action=history&amp;feed=atom&amp;title=PasswordReminder"/>
	<link rel="alternate" type="text/html" href="https://rt-wiki.bestpractical.com/index.php?title=PasswordReminder&amp;action=history"/>
	<updated>2026-08-22T20:37:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://rt-wiki.bestpractical.com/index.php?title=PasswordReminder&amp;diff=2550&amp;oldid=prev</id>
		<title>Admin: 2 revisions imported</title>
		<link rel="alternate" type="text/html" href="https://rt-wiki.bestpractical.com/index.php?title=PasswordReminder&amp;diff=2550&amp;oldid=prev"/>
		<updated>2016-04-06T20:20:27Z</updated>

		<summary type="html">&lt;p&gt;2 revisions imported&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Password Reminders =&lt;br /&gt;
&lt;br /&gt;
Try the module located at http://github.com/gitpan/RT-Extension-ResetPassword&lt;br /&gt;
&lt;br /&gt;
= Older notes =&lt;br /&gt;
&lt;br /&gt;
I had a need to provide an easy way for unprivileged users to reset their password. I looked around the code base in 3.4.3 and only found a few TODO notes from [[JesseVincent]]. This is what I came up with.&lt;br /&gt;
&lt;br /&gt;
([[OleCraig]] notes: If you&amp;#039;re looking for RT::User::[[SendPasswordEmail]], the modified User overlay below is as close as you&amp;#039;ll get as of 8/2006; the mention of that class in the [[ResetPassword]] function found in the stock 3.x.x [[User Overlay|User_Overlay]].pm is an orphan call.)&lt;br /&gt;
&lt;br /&gt;
== /NoAuth/Reminder.html ==&lt;br /&gt;
&lt;br /&gt;
Jesse provided a stub in [=$rt_dir/share/html/[[NoAuth]]/Reminder].&lt;br /&gt;
&lt;br /&gt;
Copy below to [=/opt/rt3/local/html/[[NoAuth]]/Reminder.html]&lt;br /&gt;
&lt;br /&gt;
I modified it to become this:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Header, title =&amp;amp;gt; loc(&amp;#039;Password Reminder&amp;#039;) &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;DIV ALIGN=CENTER&amp;amp;gt;&lt;br /&gt;
 % if ($Error) {&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/TitleBoxStart, title =&amp;amp;gt; loc(&amp;#039;Error&amp;#039;) &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;% $Error %&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/TitleBoxEnd &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 % }&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/TitleBoxStart, width=&amp;amp;gt; &amp;quot;40%&amp;quot;, titleright =&amp;amp;gt; loc(&amp;quot;RT [_1]&amp;quot;,&lt;br /&gt;
 $RT::VERSION), title =&amp;amp;gt; loc(&amp;#039;Password Reminder&amp;#039;) , contentbg=&amp;amp;gt;&amp;quot;#cccccc&amp;quot; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 % if ($user_msg eq &amp;quot;Nothing selected.&amp;quot;) {&lt;br /&gt;
 &amp;amp;lt;FORM ACTION=&amp;quot;&amp;amp;lt;%$RT::WebPath%&amp;amp;gt;/NoAuth/Reminder.html&amp;quot; METHOD=POST&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;table&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
             &amp;amp;lt;td colspan=2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;p&amp;amp;gt;Hello.  If you are unable to remember your password, please&lt;br /&gt;
 enter your email address.  A new one will be generated for you.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
             &amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;tr&amp;amp;gt;&amp;amp;lt;td colspan=2&amp;amp;gt;  &amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
             &amp;amp;lt;td&amp;amp;gt;Email address:&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
             &amp;amp;lt;td&amp;amp;gt;&amp;amp;lt;input  name=&amp;quot;UserString&amp;quot;&amp;amp;gt;&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Submit &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/FORM&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 %} else {&lt;br /&gt;
 &amp;amp;lt;table&amp;amp;gt;&lt;br /&gt;
 %   if ($Users-&amp;amp;gt;Count == 1) {&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Hello&lt;br /&gt;
 %          print $Users-&amp;amp;gt;First-&amp;amp;gt;EmailAddress;&lt;br /&gt;
 &amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 %          my ($stat, $error) = $Users-&amp;amp;gt;First-&amp;amp;gt;ResetPassword();&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;&amp;amp;lt;%$error%&amp;amp;gt;&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Please &amp;amp;lt;a href=&amp;quot;&amp;amp;lt;% $RT::WebURL %&amp;amp;gt;&amp;quot;&amp;amp;gt;Login&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 %   } else {&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;Could not find this user.&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 %   }&lt;br /&gt;
 &amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
 %}&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/TitleBoxEnd &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Footer &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;%INIT&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 my ($user_msg, $Users);&lt;br /&gt;
 &lt;br /&gt;
 my $userobj = new RT::User($RT::SystemUser);&lt;br /&gt;
 &lt;br /&gt;
 if (! length $ARGS{&amp;#039;UserString&amp;#039;} ) {&lt;br /&gt;
     $user_msg = &amp;quot;Nothing selected.&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
     $Users = new RT::Users($RT::SystemUser);&lt;br /&gt;
     $Users-&amp;amp;gt;Limit(FIELD =&amp;amp;gt; &amp;#039;EmailAddress&amp;#039;, VALUE =&amp;amp;gt; $ARGS{&amp;#039;UserString&amp;#039;},&lt;br /&gt;
         OPERATOR =&amp;amp;gt; &amp;#039;=&amp;#039;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;/%INIT&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;%ARGS&amp;amp;gt;&lt;br /&gt;
 $UserString =&amp;amp;gt; undef&lt;br /&gt;
 $Error =&amp;amp;gt; undef&lt;br /&gt;
 &amp;amp;lt;/%ARGS&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /Elements/Login ==&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;/opt/rt3/share/html/Elements/Login&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/opt/rt3/local/html/Elements/&amp;lt;/code&amp;gt; and add below (only the + parts ;-) )&lt;br /&gt;
&lt;br /&gt;
Next, I had to modify &amp;lt;code&amp;gt;Elements/Login&amp;lt;/code&amp;gt; to reference the new &amp;lt;code&amp;gt;Reminder.html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 --- /opt/rt3/share/html/Elements/Login  Sun Mar 27 01:01:20 2005&lt;br /&gt;
 +++ Elements/Login      Fri Sep 30 16:19:54 2005&lt;br /&gt;
 @@ -75,6 +75,9 @@&lt;br /&gt;
  &amp;amp;lt;TR&amp;amp;gt;&amp;amp;lt;TD colspan=2 align=right&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;input type=submit Value=&amp;quot;&amp;amp;lt;&amp;amp;amp;|/l&amp;amp;amp;&amp;amp;gt;Login&amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/TD&amp;amp;gt;&amp;amp;lt;/TR&amp;amp;gt;&lt;br /&gt;
 +&amp;amp;lt;TR&amp;amp;gt;&amp;amp;lt;TD colspan=2&amp;amp;gt;&lt;br /&gt;
 +If you&amp;#039;ve forgotten your username or password, RT can &amp;amp;lt;A&lt;br /&gt;
 +href=&amp;quot;/NoAuth/Reminder.html&amp;quot;&amp;amp;gt;send you a reminder&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/TD&amp;amp;gt;&amp;amp;lt;/TR&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/TABLE&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  %# Give callbacks a chance to add more control elements&lt;br /&gt;
 @@ -105,10 +108,6 @@&lt;br /&gt;
  &amp;amp;lt;/DIV&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;amp;lt;BR&amp;amp;gt;&lt;br /&gt;
 -&amp;amp;lt;!-- TODO: not yet implemented&lt;br /&gt;
 -If you&amp;#039;ve forgotten your username or password, RT can &amp;amp;lt;A&lt;br /&gt;
 -href=&amp;quot;/NoAuth/Reminder.html&amp;quot;&amp;amp;gt;send you a reminder&amp;amp;lt;/a&amp;amp;gt;.&lt;br /&gt;
 ---&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;BR&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;BR&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;BR&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User_Local.pm Overlay ==&lt;br /&gt;
&lt;br /&gt;
Next, I had to create an overlay of [=RT::User::[[ResetPassword]]].&lt;br /&gt;
&lt;br /&gt;
Save this as [=[[User Local|User_Local]].pm] in &amp;lt;code&amp;gt;/opt/rt3/local/lib/RT/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 package RT::User;&lt;br /&gt;
 no warnings qw(redefine);&lt;br /&gt;
 use strict;&lt;br /&gt;
 &lt;br /&gt;
 sub ResetPassword {&lt;br /&gt;
     my $self = shift;&lt;br /&gt;
 &lt;br /&gt;
     unless ( $self-&amp;amp;gt;CurrentUserCanModify(&amp;#039;Password&amp;#039;) ) {&lt;br /&gt;
         return ( 0, $self-&amp;amp;gt;loc(&amp;quot;Permission Denied&amp;quot;) );&lt;br /&gt;
     }&lt;br /&gt;
     my ( $status, $pass ) = $self-&amp;amp;gt;SetRandomPassword();&lt;br /&gt;
 &lt;br /&gt;
     unless ($status) {&lt;br /&gt;
         return ( 0, &amp;quot;$pass&amp;quot; );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     my $template = RT::Template-&amp;amp;gt;new( $self-&amp;amp;gt;CurrentUser );&lt;br /&gt;
 &lt;br /&gt;
     if ( $self-&amp;amp;gt;Privileged ) {&lt;br /&gt;
         $template-&amp;amp;gt;LoadGlobalTemplate(&amp;#039;RT_PasswordChange_Privileged&amp;#039;);&lt;br /&gt;
     }&lt;br /&gt;
     else {&lt;br /&gt;
         $template-&amp;amp;gt;LoadGlobalTemplate(&amp;#039;RT_PasswordChange_NonPrivileged&amp;#039;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     unless ( $template-&amp;amp;gt;Id ) {&lt;br /&gt;
         $template-&amp;amp;gt;LoadGlobalTemplate(&amp;#039;RT_PasswordChange&amp;#039;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     unless ( $template-&amp;amp;gt;Id ) {&lt;br /&gt;
         $RT::Logger-&amp;amp;gt;crit( &amp;quot;$self tried to send &amp;quot;&lt;br /&gt;
               . $self-&amp;amp;gt;Name&lt;br /&gt;
               . &amp;quot; a password reminder &amp;quot;&lt;br /&gt;
               . &amp;quot;but couldn&amp;#039;t find a password change template&amp;quot; );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     my ($result, $message) = $template-&amp;amp;gt;Parse(&lt;br /&gt;
         CurrentUser =&amp;amp;gt; $RT::SystemUser,&lt;br /&gt;
         TemplateObj =&amp;amp;gt; $template,&lt;br /&gt;
         Argument    =&amp;amp;gt; $pass&lt;br /&gt;
     );&lt;br /&gt;
 &lt;br /&gt;
     if ( !$result) {&lt;br /&gt;
         $RT::Logger-&amp;amp;gt;warn(&amp;quot;User tried to reset password but template obj failed to load for &amp;quot; . $self-&amp;amp;gt;CurrentUser-&amp;amp;gt;Name);&lt;br /&gt;
         return ( 0, $self-&amp;amp;gt;loc(&amp;quot;Sorry, something failed and I could not change your password&amp;quot;));&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     my $MIMEObj = $template-&amp;amp;gt;MIMEObj;&lt;br /&gt;
 &lt;br /&gt;
     $MIMEObj-&amp;amp;gt;head-&amp;amp;gt;set(&amp;#039;To&amp;#039;, $self-&amp;amp;gt;EmailAddress);&lt;br /&gt;
     $MIMEObj-&amp;amp;gt;head-&amp;amp;gt;set(&amp;#039;From&amp;#039;, $RT::CorrespondAddress);&lt;br /&gt;
 &lt;br /&gt;
     #$-&amp;amp;gt;SetHeader( &amp;#039;To&amp;#039;, $self-&amp;amp;gt;EmailAddress );&lt;br /&gt;
 &lt;br /&gt;
     my $ret;&lt;br /&gt;
     if ( $RT::MailCommand eq &amp;#039;sendmailpipe&amp;#039; ) {&lt;br /&gt;
         eval {&lt;br /&gt;
             open( MAIL, &amp;quot;|$RT::SendmailPath $RT::SendmailArguments&amp;quot; ) || die $!;&lt;br /&gt;
             print MAIL $MIMEObj-&amp;amp;gt;as_string;&lt;br /&gt;
             close(MAIL);&lt;br /&gt;
         };&lt;br /&gt;
         if ($@) {&lt;br /&gt;
             $RT::Logger-&amp;amp;gt;crit(&amp;quot;Could not send password reset. -&amp;quot; . $@ );&lt;br /&gt;
         } else {&lt;br /&gt;
             $ret = 1;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     else {&lt;br /&gt;
         my @mailer_args = ($RT::MailCommand);&lt;br /&gt;
 &lt;br /&gt;
         local $ENV{MAILADDRESS};&lt;br /&gt;
 &lt;br /&gt;
         if ( $RT::MailCommand eq &amp;#039;sendmail&amp;#039; ) {&lt;br /&gt;
             push @mailer_args, split(/\s+/, $RT::SendmailArguments);&lt;br /&gt;
         }&lt;br /&gt;
         elsif ( $RT::MailCommand eq &amp;#039;smtp&amp;#039; ) {&lt;br /&gt;
             $ENV{MAILADDRESS} = $RT::SMTPFrom || $MIMEObj-&amp;amp;gt;head-&amp;amp;gt;get(&amp;#039;From&amp;#039;);&lt;br /&gt;
             push @mailer_args, ( Server =&amp;amp;gt; $RT::SMTPServer );&lt;br /&gt;
             push @mailer_args, ( Debug  =&amp;amp;gt; $RT::SMTPDebug );&lt;br /&gt;
         }&lt;br /&gt;
         else {&lt;br /&gt;
             push @mailer_args, $RT::MailParams;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         unless ( $MIMEObj-&amp;amp;gt;send(@mailer_args) ) {&lt;br /&gt;
             $RT::Logger-&amp;amp;gt;crit(&amp;quot;Could not send password reset.&amp;quot; );&lt;br /&gt;
             return (0);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         $ret = 1;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
     if ($ret) {&lt;br /&gt;
         return ( 1, $self-&amp;amp;gt;loc(&amp;#039;New password notification sent&amp;#039;) );&lt;br /&gt;
     }&lt;br /&gt;
     else {&lt;br /&gt;
         return ( 0, $self-&amp;amp;gt;loc(&amp;#039;Notification could not be sent&amp;#039;) );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 1;&lt;br /&gt;
&lt;br /&gt;
== RT_PasswordChange Template ==&lt;br /&gt;
&lt;br /&gt;
Finally, I had to create a template for my overlayed [=[[ResetPasswrd]]()].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;* Name: RT_PasswordChange&lt;br /&gt;
 * Description:  Notification of Password Change&lt;br /&gt;
 * Content:&lt;br /&gt;
 &lt;br /&gt;
 Subject: your {$rtname} account password reset&lt;br /&gt;
 &lt;br /&gt;
 Hello.&lt;br /&gt;
 &lt;br /&gt;
 Someone requested a password reminder for your account.  Because we keep your&lt;br /&gt;
 password encrypted, we don&amp;#039;t know what your previous password was.  We have set&lt;br /&gt;
 a new password for your account.  The only address that received this notice&lt;br /&gt;
 was the email on record for your account.&lt;br /&gt;
 &lt;br /&gt;
 The new password is &amp;quot;{$Argument}&amp;quot; without the double quotes.&lt;br /&gt;
 &lt;br /&gt;
 You may login to {$rtname} at&lt;br /&gt;
 &lt;br /&gt;
   {$RT::WebURL}&lt;br /&gt;
 &lt;br /&gt;
 at your convience.&lt;br /&gt;
 &lt;br /&gt;
 If you have further questions regarding this, please respond and a ticket will&lt;br /&gt;
 be opened regarding your request.&lt;br /&gt;
 &lt;br /&gt;
 Thank you,&lt;br /&gt;
 {$RT::CorrespondAddress}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
This worked for me. YMMV. If you have questions about it, you can find me in #rt on irc.perl.org. I&amp;#039;m [[HCoyote]]&lt;br /&gt;
&lt;br /&gt;
= Here&amp;#039;s a version of Reminder.html to look nice with RT 3.6.1 =&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Callback, %ARGS, _CallbackName =&amp;amp;gt; &amp;#039;Header&amp;#039; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Header, Title =&amp;amp;gt; loc(&amp;#039;Reset Your Password&amp;#039;), Focus =&amp;amp;gt; &amp;#039;UserString&amp;#039; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;body&amp;quot; class=&amp;quot;login-body&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 % if ($Error) {&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp;| &amp;quot;/Widgets/TitleBox&amp;quot;, title =&amp;amp;gt; loc(&amp;#039;Error&amp;#039;), hideable =&amp;amp;gt; 0 &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;% $Error %&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 % }&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Callback, %ARGS, _CallbackName =&amp;amp;gt; &amp;#039;BeforeForm&amp;#039; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;login-box&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp;| &amp;quot;/Widgets/TitleBox&amp;quot;, title =&amp;amp;gt; loc(&amp;#039;Reset Your Password&amp;#039;), titleright =&amp;amp;gt; $RT::VERSION, hideable =&amp;amp;gt; 0 &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 % if ($user_msg eq &amp;quot;Nothing selected.&amp;quot;) {&lt;br /&gt;
 &amp;amp;lt;form action=&amp;quot;&amp;amp;lt;%$RT::WebPath%&amp;amp;gt;/NoAuth/Reminder.html&amp;quot; method=&amp;quot;post&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;p&amp;amp;gt;Just enter your email address below, and a new&lt;br /&gt;
    one will be generated and sent to you.&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;p&amp;amp;gt;If you have any problems, just&lt;br /&gt;
    &amp;amp;lt;a href=&amp;quot;http://www.suretecsystems.com/contact&amp;quot;&lt;br /&gt;
    title=&amp;quot;Suretec Contact Details&amp;quot;&amp;amp;gt;call us&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;span class=&amp;quot;label&amp;quot;&amp;amp;gt;Email:&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;span class=&amp;quot;input&amp;quot;&amp;amp;gt;&amp;amp;lt;input name=&amp;quot;UserString&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;button-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;span class=&amp;quot;input&amp;quot;&amp;amp;gt;&amp;amp;lt;input type=&amp;quot;submit&amp;quot; class=&amp;quot;button&amp;quot; value=&amp;quot;Reset&amp;quot; /&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/form&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 %} else {&lt;br /&gt;
 %   if ($Users-&amp;amp;gt;Count == 1) {&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;Hello&lt;br /&gt;
 %          print $Users-&amp;amp;gt;First-&amp;amp;gt;EmailAddress;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 %          my ($stat, $error) = $Users-&amp;amp;gt;First-&amp;amp;gt;ResetPassword();&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&amp;amp;lt;%$error%&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;Please &amp;amp;lt;a href=&amp;quot;&amp;amp;lt;% $RT::WebURL %&amp;amp;gt;&amp;quot;&amp;amp;gt;Login&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 %   } else {&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;Could not find this user.&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 %   }&lt;br /&gt;
 %   }&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;!-- #login-box --&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Callback, %ARGS, _CallbackName =&amp;amp;gt; &amp;#039;AfterForm&amp;#039; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Footer, Menu =&amp;amp;gt; 0 &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;%INIT&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 my ($user_msg, $Users);&lt;br /&gt;
 &lt;br /&gt;
 my $userobj = new RT::User($RT::SystemUser);&lt;br /&gt;
 &lt;br /&gt;
 if (! length $ARGS{&amp;#039;UserString&amp;#039;} ) {&lt;br /&gt;
    $user_msg = &amp;quot;Nothing selected.&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    $Users = new RT::Users($RT::SystemUser);&lt;br /&gt;
    $Users-&amp;amp;gt;Limit(FIELD =&amp;amp;gt; &amp;#039;EmailAddress&amp;#039;, VALUE =&amp;amp;gt; $ARGS{&amp;#039;UserString&amp;#039;},&lt;br /&gt;
        OPERATOR =&amp;amp;gt; &amp;#039;=&amp;#039;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;/%INIT&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;%ARGS&amp;amp;gt;&lt;br /&gt;
 $UserString =&amp;amp;gt; undef&lt;br /&gt;
 $Error =&amp;amp;gt; undef&lt;br /&gt;
 &amp;amp;lt;/%ARGS&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For 3.8.4 we have used:&lt;br /&gt;
&lt;br /&gt;
== /NoAuth/Reminder.html ==&lt;br /&gt;
&lt;br /&gt;
 % $m-&amp;amp;gt;callback( %ARGS, CallbackName =&amp;amp;gt; &amp;#039;Header&amp;#039; );&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Header, Title =&amp;amp;gt; loc(&amp;#039;Reset Your Password&amp;#039;), Focus =&amp;amp;gt; &amp;#039;UserString&amp;#039; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;body&amp;quot; class=&amp;quot;login-body&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 % if ($Error) {&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp;| &amp;quot;/Widgets/TitleBox&amp;quot;, title =&amp;amp;gt; loc(&amp;#039;Error&amp;#039;), hideable =&amp;amp;gt; 0 &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;% $Error %&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 % }&lt;br /&gt;
 &lt;br /&gt;
 % $m-&amp;amp;gt;callback( %ARGS, CallbackName =&amp;amp;gt; &amp;#039;BeforeForm&amp;#039; );&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;login-box&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp;| &amp;quot;/Widgets/TitleBox&amp;quot;, title =&amp;amp;gt; loc(&amp;#039;Reset Your Password&amp;#039;), titleright =&amp;amp;gt; $RT::VERSION, hideable =&amp;amp;gt; 0 &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 % if ($user_msg eq &amp;quot;Nothing selected.&amp;quot;) {&lt;br /&gt;
 &amp;amp;lt;form action=&amp;quot;&amp;amp;lt;%$RT::WebPath%&amp;amp;gt;/NoAuth/Reminder.html&amp;quot; method=&amp;quot;post&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;p&amp;amp;gt;If you have any problems, just&lt;br /&gt;
    &amp;amp;lt;a href=&amp;quot;http://www.suretecsystems.com/contact&amp;quot;&lt;br /&gt;
    title=&amp;quot;Suretec Contact Details&amp;quot;&amp;amp;gt;call us&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;span class=&amp;quot;label&amp;quot;&amp;amp;gt;Email:&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;span class=&amp;quot;input&amp;quot;&amp;amp;gt;&amp;amp;lt;input name=&amp;quot;UserString&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;button-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;span class=&amp;quot;input&amp;quot;&amp;amp;gt;&amp;amp;lt;input type=&amp;quot;submit&amp;quot; class=&amp;quot;button&amp;quot; value=&amp;quot;Reset&amp;quot; /&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/&amp;quot;&amp;amp;gt;I&amp;#039;ve remembered, take me back.&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;/form&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 %} else {&lt;br /&gt;
 %   if ($Users-&amp;amp;gt;Count == 1) {&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;Hello&lt;br /&gt;
 %          print $Users-&amp;amp;gt;First-&amp;amp;gt;EmailAddress;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 %          my ($stat, $error) = $Users-&amp;amp;gt;First-&amp;amp;gt;ResetPassword();&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&amp;amp;lt;%$error%&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;Please &amp;amp;lt;a href=&amp;quot;&amp;amp;lt;% $RT::WebURL %&amp;amp;gt;&amp;quot;&amp;amp;gt;Login&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 %   } else {&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;Could not find this user.&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 %   }&lt;br /&gt;
 %   }&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;!-- #login-box --&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 % $m-&amp;amp;gt;callback( %ARGS, CallbackName =&amp;amp;gt; &amp;#039;AfterForm&amp;#039; );&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Footer, Menu =&amp;amp;gt; 0 &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;%INIT&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 my ($user_msg, $Users);&lt;br /&gt;
 &lt;br /&gt;
 my $userobj = new RT::User($RT::SystemUser);&lt;br /&gt;
 &lt;br /&gt;
 if (! length $ARGS{&amp;#039;UserString&amp;#039;} ) {&lt;br /&gt;
    $user_msg = &amp;quot;Nothing selected.&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    $Users = new RT::Users($RT::SystemUser);&lt;br /&gt;
    $Users-&amp;amp;gt;Limit(FIELD =&amp;amp;gt; &amp;#039;EmailAddress&amp;#039;, VALUE =&amp;amp;gt; $ARGS{&amp;#039;UserString&amp;#039;},&lt;br /&gt;
        OPERATOR =&amp;amp;gt; &amp;#039;=&amp;#039;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;/%INIT&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;%ARGS&amp;amp;gt;&lt;br /&gt;
 $UserString =&amp;amp;gt; undef&lt;br /&gt;
 $Error =&amp;amp;gt; undef&lt;br /&gt;
 &amp;amp;lt;/%ARGS&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Add this to the Login in local&lt;br /&gt;
&lt;br /&gt;
== /Elements/Login ==&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;input-row&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/NoAuth/Reminder.html&amp;quot;&amp;amp;gt;Forgotten password?&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>