4207f671700b12cb2a26315e6b80883ca50a5857
[usit-rt.git] / local / html / Callbacks / UiOCallbacks / Elements / Login / AfterForm
1 %# Add template named 'Password Change', with description
2 %#
3 %#   Automatically generate password for external users who have forgotten their password
4 %#
5 %# and content
6 %#
7 %#
8 %# Hei {$RealName} !
9 %#
10 %# Denne meldingen er automatisk generert som svar på
11 %# din henvendelse, som ekstern bruker av Request Tracker
12 %# ved UiO, om bytte av passord på følgende hjemmeside:
13 %#
14 %# https://hjelp.uio.no
15 %#
16 %# For å logge deg på RT bruker du:
17 %# Brukernavn (Username): {$Username}
18 %# Passord (Password): {$Password}
19 %#
20 %# Har du ellers problemer med din innlogging så sender
21 %# du en e-post til:
22 %#
23 %# general@hjelp.uio.no
24 %#
25 %# mvh
26 %# RT drift
27
28 <DIV ALIGN="CENTER">
29 <P align="CENTER">
30 <U><B>Glemt passord?/Forgot Your password?</B></U><br>
31 <B>
32 %print $customMessage2;
33 </B><br>
34 %print $customMessage; 
35 <form method="post" action="<% RT->Config->Get('WebPath') %>/NoAuth/Login.html">
36 <input type="text" name="email">
37 <input type="submit">
38 </form>
39 </P>
40 </DIV>
41
42 <%INIT>
43 my $customMessage;
44 my $customMessage2;
45
46 my $mailfrom = 'RT reminder <general@hjelp.uio.no>';
47
48 if ($email) {
49   if ($email =~ m/((abelprisen|abelprize|atferdssenteret|blindern-studenterhjem|cubestar|dnva|fsweb|funmat|fysikkforeningen|grunderskolen|hlsenteret|holocaust|kavliprisen|kavliprize|naturfagsenteret|nik|nix|noffo|samordnaopptak|shs|simula|stami|studweb|uio|unimus|unirand|unirand|universityofoslo|usit)\.no|(matematikk|gutta)\.org|hisp.info|fronter.com)/) {
50     $customMessage = "[ You can not change or request a password for an UiO account here. See: <a href=https://brukerinfo.uio.no/>UiO user administration services</a>. ]";
51     $customMessage2  = "[ ERROR: Use your UiO username and password to log in above. ]";
52   }
53     else {
54     my $UserObj = RT::User->new($RT::SystemUser);
55     $UserObj->LoadByEmail($email);
56     if (defined($UserObj->Id)) {
57       my ($val, $str) = ResetPassword($UserObj);
58       $customMessage2 = $str;
59       $customMessage = "";
60     }
61     else {
62       $customMessage2 = "[ ERROR: No account matches that email address ]";
63       $customMessage = "[ Please enter your email address again ]";
64     }
65   }
66 } else {
67   $customMessage = "[ Please enter your email address ]";
68 }
69
70 sub ResetPassword {
71     my $self = shift;
72
73     unless ( $self->CurrentUserCanModify('Password') ) {
74         return ( 0, $self->loc("Permission Denied") );
75     }  
76     my ( $status, $pass ) = $self->SetRandomPassword();
77
78     unless ($status) {
79         return ( 0, "$pass" );
80     }
81     
82     my $ret = RT::Interface::Email::SendEmailUsingTemplate(
83         To        => $self->EmailAddress,
84         Template  => 'Password Change',
85         Arguments => {
86             Password => $pass,
87             RealName => $self->RealName,
88             Username => $self->Name
89         },
90         );
91     
92     if ($ret) {
93         return ( 1, $self->loc('[ SUCCESS: New password notification sent to Your email address ]') );
94     }
95     else {
96         return ( 0, $self->loc('[ ERROR: Notification could not be sent ]') );
97     }
98
99 }
100
101 # Pre 3.8.2.
102 #
103 #sub ResetPassword {
104 #    my $self = shift;
105 #    my $mailfrom = shift;
106 #
107 #    my $email = $self->EmailAddress;
108 #
109 #    unless ( $self->CurrentUserCanModify('Password') ) {
110 #        return ( 0, $self->loc("[ ERROR: Permission Denied ]") );
111 #    }
112 #
113 #    unless ( ($self->Name =~ m/\@/) ) {
114 #        return ( 0, $self->loc("[ ERROR: Not an external user ]") );
115 #    }
116 #
117 #    my ( $status, $pass ) = $self->SetRandomPassword();
118 #
119 #    unless ($status) {
120 #        return ( 0, "$pass" );
121 #    }
122 #
123 #    my $template = RT::Template->new( $self->CurrentUser );
124 #
125 #    my $parsed;
126 #    # This test do not work.  I'm not sure how to detect if the template
127 #    # loading failed [pere 2006-08-16]
128 #    if ($template->LoadGlobalTemplate('Password Change')) {
129 #        $T::RealName = $self->RealName;
130 #        $T::Username = $self->Name;
131 #        $T::Password = $pass;
132 #        $parsed = $template->_ParseContent();
133 #    } else {
134 #        $parsed = <<EOF;
135 #
136 #Using hardcoded default text body because 'Password Change' template is missing.
137 #
138 #        RealName = '$self->RealName'
139 #        Username = '$self->Name'
140 #        Password = '$pass'
141 #EOF
142 #    }
143 #    my $entity = MIME::Entity->build(
144 #                                      From    => $mailfrom,
145 #                                      To      => $email,
146 #                                      Subject => loc("Bytte av passord (Password change)"),
147 #                                      'X-RT-Loop-Prevention' => $RT::rtname,
148 #                                      Type    => "text/plain",
149 #                                      Charset => "UTF-8",
150 #                                      Data    => [$parsed]
151 #                                    );
152 #    open (MAIL, "|$RT::SendmailPath $RT::SendmailArguments -t") || return(0);
153 #    print MAIL $entity->as_string;
154 #    close(MAIL);
155 #
156 #    return ( 1, '[ SUCCESS: New password notification sent to Your email address ]');
157 #}
158 </%INIT>
159
160 <%ARGS>
161 $email => undef
162 </%ARGS>