On 7 May 2011, at 14:29, Rohan M wrote:

Yes. Now the Authentication part is working.

I'm running into one more issue. Now, I'm able to get username from the htpasswd file. But my user information like Name, Address is stored in the database.

Can I add this information (name, address coming from db) in the user object generated from Catalyst::Authentication::Store::Htpasswd ?

Does anyone has idea how to go about this?


http://search.cpan.org/~bobtfish/Catalyst-Authentication-Store-Htpasswd-1.003/lib/Catalyst/Authentication/Store/Htpasswd.pm#user_class

I.e. subclass Catalyst::Authentication::Store::Htpasswd::User as MyApp::User, change that config setting, and you can now put extra code into your user class...

This gets your part way, but you don't have $c here, so your user class can't lookup the extra info in the app..

The solution to that is to also subclass the Store itself, and wrap / use an around method modifier on the 'find_user' method - something like (in pseudocode):

around find_user => sub {
    my ($orig, $self, $authinfo, $c, @args) = @_;
    my $user = $self->$orig($authinfo, $c, @args);
$user->extra_field($c->model('DB::User')->find({ username => $user->id })->first->extra_field;
    return $user;
};

Sane error handling (e.g. user does not exist, or user in the htpasswd file, but not the DB) is left as an exercise for the reader.

Cheers
t0m


_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to