Author: spadkins
Date: Tue Feb 17 12:10:41 2009
New Revision: 12509

Modified:
   p5ee/trunk/App-Repository/lib/App/Authentication/Repository.pm

Log:
add user_values option on validate_password()

Modified: p5ee/trunk/App-Repository/lib/App/Authentication/Repository.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Authentication/Repository.pm      
(original)
+++ p5ee/trunk/App-Repository/lib/App/Authentication/Repository.pm      Tue Feb 
17 12:10:41 2009
@@ -63,7 +63,7 @@
 
 sub validate_password {
     &App::sub_entry if ($App::trace);
-    my ($self, $username, $password) = @_;
+    my ($self, $username, $password, $options) = @_;
     my $valid = 0;
 
     my $context         = $self->{context};
@@ -74,7 +74,28 @@
     my $password_column = $self->{password_column} || "password";
 
     my $db = $context->repository($rep_name);
-    my $pword = $db->get($table, { "$username_column.eq" => $username }, 
$password_column);
+    my ($pword);
+    if ($options->{user_values}) {
+        my $user_columns    = $self->{user_columns};
+        if ($user_columns && !ref($user_columns)) {
+            my $user_columns_array = [ split(/,/, $user_columns) ];
+            if ($user_columns !~ /\b$password_column\b/) {
+                push(@$user_columns_array, $password_column);
+            }
+            $user_columns = $user_columns_array;
+            $self->{user_columns} = $user_columns;
+        }
+        my $user = $db->get_hash($table, { "$username_column.eq" => $username 
}, $user_columns);
+        if ($user) {
+            $pword = $user->{$password_column};
+            foreach my $var (keys %$user) {
+                $options->{user_values}{$var} = $user->{$var} if ($var ne 
$password_column);
+            }
+        }
+    }
+    else {
+        $pword = $db->get($table, { "$username_column.eq" => $username }, 
$password_column);
+    }
     if ($pword) {
         my $crypt = crypt($password, $pword);
         $valid = ($pword eq $crypt) ? 1 : 0;

Reply via email to