From: Tomas Doran Date: Mon, 6 Oct 2008 14:08:16 +0000 (+0000) Subject: Add an extra field which I need X-Git-Tag: v1.006~2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Authentication-Credential-HTTP.git;a=commitdiff_plain;h=a50635bf37ea7ffd304097bfb7d3e44aaeb724a8 Add an extra field which I need --- diff --git a/Changes b/Changes index 950e6dc..728b13c 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,7 @@ +1.006 2008-10-06 + - Added username_field configuration option. I need this to play + nice with Catalyst::Authentication::Store::Tangram. + 1.005 2008-09-25 - Added better description of the use of the domains and use_uri_for options (info culled from RFC2617). diff --git a/Todo b/Todo index 62cae9a..6cc2b1c 100644 --- a/Todo +++ b/Todo @@ -2,4 +2,6 @@ . Test 'algorithm' config / MD5-sess properly. . Full implementation of MD5-sess with remote authentication service. . Domain option should be able to be passed as config. -. Support for NTLM auth? \ No newline at end of file +. Support for NTLM auth? +. Config verification / validation on construction. +. Test all config parameters (esp username_field) \ No newline at end of file diff --git a/lib/Catalyst/Authentication/Credential/HTTP.pm b/lib/Catalyst/Authentication/Credential/HTTP.pm index 775ec08..8765a43 100644 --- a/lib/Catalyst/Authentication/Credential/HTTP.pm +++ b/lib/Catalyst/Authentication/Credential/HTTP.pm @@ -13,11 +13,12 @@ BEGIN { __PACKAGE__->mk_accessors(qw/_config realm/); } -our $VERSION = "1.005"; +our $VERSION = "1.006"; sub new { my ($class, $config, $app, $realm) = @_; + $config->{username_field} ||= 'username'; my $self = { _config => $config, _debug => $app->debug }; bless $self, $class; @@ -58,7 +59,7 @@ sub authenticate_basic { my $headers = $c->req->headers; if ( my ( $username, $password ) = $headers->authorization_basic ) { - my $user_obj = $realm->find_user( { username => $username }, $c); + my $user_obj = $realm->find_user( { $self->_config->{username_field} => $username }, $c); if (ref($user_obj)) { if ($self->check_password($user_obj, {$self->_config->{password_field} => $password})) { $c->set_authenticated($user_obj); @@ -125,7 +126,7 @@ sub authenticate_digest { my $user; unless ( $user = $auth_info->{user} ) { - $user = $realm->find_user( { username => $username }, $c); + $user = $realm->find_user( { $self->_config->{username_field} => $username }, $c); } unless ($user) { # no user, no authentication $c->log->debug("Unable to locate user matching user info provided") if $c->debug; @@ -569,6 +570,10 @@ L +=item username_field + +The field name that the user's username is mapped into when finding the user from the realm. Defaults to 'username'. + =item use_uri_for If this configuration key has a true value, then the domain(s) for the authorization header will be