Support for password update
authorberick <berick@esilibrary.com>
Thu, 7 Apr 2011 19:10:24 +0000 (15:10 -0400)
committerberick <berick@esilibrary.com>
Thu, 7 Apr 2011 19:10:24 +0000 (15:10 -0400)
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
Open-ILS/web/templates/default/opac/myopac/prefs.tt2
Open-ILS/web/templates/default/opac/myopac/update_password.tt2 [new file with mode: 0644]

index 9ba54a7..ad8ec8f 100644 (file)
@@ -124,6 +124,7 @@ sub load {
     return $self->load_myopac_payments if $path =~ m|opac/myopac/main_payments|;
     return $self->load_myopac_main if $path =~ m|opac/myopac/main|;
     return $self->load_myopac_update_email if $path =~ m|opac/myopac/update_email|;
+    return $self->load_myopac_update_password if $path =~ m|opac/myopac/update_password|;
     return $self->load_myopac_update_username if $path =~ m|opac/myopac/update_username|;
     return $self->load_myopac_bookbags if $path =~ m|opac/myopac/lists|;
     return $self->load_myopac_bookbag_update if $path =~ m|opac/myopac/list/update|;
index 3bde775..9dee8b9 100644 (file)
@@ -652,6 +652,9 @@ sub load_myopac_update_email {
     my $ctx = $self->ctx;
     my $email = $self->cgi->param('email') || '';
 
+    return Apache2::Const::OK 
+        unless $self->cgi->request_method eq 'POST';
+
     unless($email =~ /.+\@.+\..+/) { # TODO better regex?
         $ctx->{invalid_email} = $email;
         return Apache2::Const::OK;
@@ -674,6 +677,9 @@ sub load_myopac_update_username {
     my $ctx = $self->ctx;
     my $username = $self->cgi->param('username') || '';
 
+    return Apache2::Const::OK 
+        unless $self->cgi->request_method eq 'POST';
+
     unless($username and $username !~ /\s/) { # any other username restrictions?
         $ctx->{invalid_username} = $username;
         return Apache2::Const::OK;
@@ -698,6 +704,47 @@ sub load_myopac_update_username {
     return $self->generic_redirect($url);
 }
 
+sub load_myopac_update_password {
+    my $self = shift;
+    my $e = $self->editor;
+    my $ctx = $self->ctx;
+
+    return Apache2::Const::OK 
+        unless $self->cgi->request_method eq 'POST';
+
+    my $current_pw = $self->cgi->param('current_pw') || '';
+    my $new_pw = $self->cgi->param('new_pw') || '';
+    my $new_pw2 = $self->cgi->param('new_pw2') || '';
+
+    unless($new_pw eq $new_pw2) {
+        $ctx->{password_nomatch} = 1;
+        return Apache2::Const::OK;
+    }
+
+    my $pw_regex = $ctx->{get_org_setting}->($e->requestor->home_ou, 'global.password_regex');
+
+    if($pw_regex and $new_pw !~ /$pw_regex/) {
+        $ctx->{password_invalid} = 1;
+        return Apache2::Const::OK;
+    }
+
+    my $evt = $U->simplereq(
+        'open-ils.actor', 
+        'open-ils.actor.user.password.update', 
+        $e->authtoken, $new_pw, $current_pw);
+
+
+    if($U->event_equals($evt, 'INCORRECT_PASSWORD')) {
+        $ctx->{password_incorrect} = 1;
+        return Apache2::Const::OK;
+    }
+
+    my $url = $self->apache->unparsed_uri;
+    $url =~ s/update_password/prefs/;
+
+    return $self->generic_redirect($url);
+}
+
 sub load_myopac_bookbags {
     my $self = shift;
     my $e = $self->editor;
index 37cce3d..8ceeec3 100644 (file)
                         </div>
                     </div>[% l("Username") %]
                 </td>
-
                 <td class='light_border'>[% ctx.user.usrname | html %]</td>
                 <td class='light_border'><a href='update_username'>[% l("Change") %]</a></td>
             </tr>
-
-            <tr id='myopac_update_username_row'
-                class='hide_me'>
-                <td class='myopac_update_cell'
-                    colspan='3'><span class=
-                    'myopac_update_span'>[% l("Enter new username:") %]</span>
-                    <input type='text' size='24' id='myopac_new_username' />
-                    <span class='myopac_update_span'><button><span class=
-                        'myopac_update_span'>[% l("Submit") %]</span></button></span>
-                    <span class='myopac_update_span'><button><span class=
-                        'myopac_update_span'>[% l("Cancel") %]</span></button></span>
-                </td>
-            </tr>
             <tr>
-                <td class='color_4 light_border'>
-                [% l("Password") %]</td>
-                <td class='light_border'
-                    id='myopac_summary_password'>
-                    [% l("(not shown)") %]</td>
-                <td class='light_border'><a href='#'
-                   class="hide_me"
-                   style='text-decoration: underline;'>[% l("Change") %]</a></td>
+                <td class='color_4 light_border'>[% l("Password") %]</td>
+                <td class='light_border'>[% l("(not shown)") %]</td>
+                <td class='light_border'><a href='update_password'>[% l("Change") %]</a></td>
             </tr>
-            <tr class='hide_me'>
-                <td class='myopac_update_cell'
-                    colspan='3'>
-                    <table>
-                        <tbody>
-                            <tr>
-                                <td>
-                                    <span class= 'myopac_update_span'>
-                                        [% l("Enter current password:") %]
-                                    </span>
-                                </td>
-
-                                <td>
-                                    <input type='password'
-                                       size='24' />
-                                   </td>
-                            </tr>
-                            <tr>
-                                <td><span class=
-                                'myopac_update_span'>[% l("Enter new password:") %]</span></td>
-
-                                <td><input type='password' size='24' />
-                                   </td>
-                            </tr>
-
-                            <tr>
-                                <td><span class=
-                                'myopac_update_span'>[% l("Re-enter new password:") %]</span></td>
-
-                                <td>
-                                    <input type='password' size='24' />
-                                </td>
-                            </tr>
-                        </tbody>
-                    </table><span class=
-                    'myopac_update_span'><button><span class=
-                    'myopac_update_span'>[% l("Submit") %]</span></button></span>
-                    <span class='myopac_update_span'><button><span class='myopac_update_span'>
-                    [% l("Cancel") %]</span></button></span>
-                </td>
-            </tr>
-
             <tr>
                 <td class='color_4 light_border'>[% l("Email Address") %]</td>
                 <td class='light_border'>[% ctx.user.email | html %]</td>
diff --git a/Open-ILS/web/templates/default/opac/myopac/update_password.tt2 b/Open-ILS/web/templates/default/opac/myopac/update_password.tt2
new file mode 100644 (file)
index 0000000..d248cdf
--- /dev/null
@@ -0,0 +1,33 @@
+[%  PROCESS "default/opac/parts/header.tt2";
+    PROCESS "default/opac/parts/misc_util.tt2";
+    WRAPPER "default/opac/parts/myopac/base.tt2";
+    myopac_page = "prefs"  %]
+
+<div id='myopac_summary_div' style="padding:0px;">
+
+[% IF ctx.password_invalid %]
+    <div id='account-update-email-error'> <!-- borrow css from update-email page -->
+        [% |l %] New password is invalid.  Please try a different password.  [% END %]
+    </div>
+
+[% ELSIF ctx.password_nomatch %]
+    <div id='account-update-email-error'>
+        [% |l %] Passwords do not match. [% END %]
+    </div>
+
+[% ELSIF ctx.password_incorrect %]
+    <div id='account-update-email-error'>
+        [% |l %] Your current password was not correct. [% END %]
+    </div>
+[% END %]
+
+<form method='POST' id='account-update-email'> 
+    <table> 
+        <tr><td>[% l('Current Password') %]</td><td><input type='password' name='current_pw'/></td></tr>
+        <tr><td>[% l('New Password') %]</td><td><input type='password' name='new_pw'/></td></tr>
+        <tr><td>[% l('New Password Again') %]</td><td><input type='password' name='new_pw2'/></td></tr>
+        <tr><td colspan='2' align='center'><input type='submit'/></td></tr>
+    </table>
+</form>
+
+[% END %]