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;