Showing 1 changed files with 27 additions and 21 deletions
+27 -21
templates/auto/reset-password.html.ep
... ...
@@ -26,32 +26,38 @@
26 26
   # Reset password
27 27
   if ($op eq 'reset') {
28 28
     
29
-    # Validation
30
-    my $params = $api->params;
31
-    my $rule = [
32
-      password => [
33
-        ['not_blank' => 'Password is empty.'],
34
-        ['ascii' => 'Password contains invalid character.']
35
-      ],
36
-      {password_check => [qw/password password2/]}
37
-        => {copy => 0}
38
-        => [
39
-          ['duplication' => "Two password don't match"]
40
-        ]
41
-    ];
42
-    my $vresult = $self->app->vc->validate($params, $rule);
29
+    # Parameters
30
+    my $password = param('password');
31
+    my $password2 = param('password2');
43 32
     
44
-    if ($vresult->is_ok) {
33
+    # Validator
34
+    my $vc = app->vc;
35
+    
36
+    # Validation result
37
+    my $validation = $vc->validation;
38
+    
39
+    # "password" check
40
+    if (!(defined $password && length $password)) {
41
+      $validation->add_failed(password => "Password is empty.");
42
+    }
43
+    elsif (!$vc->check($password, 'ascii_graphic')) {
44
+      $validation->add_failed(password => 'Password contains invalid character.');
45
+    }
46
+    elsif ($password ne $password2) {
47
+      $validation->add_failed(password => "Two password don't match");
48
+    }
49
+    
50
+    if ($validation->is_valid) {
45 51
       
46 52
       # Valid parameters
47
-      my $valid_params = $vresult->data;
48
-      my ($password_encrypted, $salt)
49
-        = $api->encrypt_password($valid_params->{password});
53
+      my ($password_encrypted, $salt) = $api->encrypt_password($password);
50 54
       
51 55
       # Reset password
52 56
       my $dbi = app->dbi;
53
-      my $count = $dbi->model('user')
54
-        ->update({password => $password_encrypted, salt => $salt}, id => $user);
57
+      my $count = $dbi->model('user')->update(
58
+        {password => $password_encrypted, salt => $salt},
59
+        where => {id => $user}
60
+      );
55 61
       
56 62
       if ($count) {
57 63
         # Redirect
... ...
@@ -79,7 +85,7 @@
79 85
       }
80 86
       else { $errors = ["User $user don't exists"] }
81 87
     }
82
-    else { $errors = $vresult->messages }
88
+    else { $errors = $validation->messages }
83 89
   }
84 90
 %>
85 91