Moritz Onken

NAME

Catalyst::Authentication::Store::Proxy - Delegates authentication logic to the user object

VERSION

version 0.0.1

SYNOPSIS

 package MyApp::User;
 use Moose;
 extends 'Catalyst::Authentication::User';
 
 sub from_session {
     my ($self, $c, $id) = @_;
 }
 
 sub for_session  {
     my ($self, $c) = @_;
 }
 
 sub find_user    {
     my ($self, $authinfo, $c) = @_;
 }
 
 ...
 
 MyApp->config(
     'Plugin::Authentication' => {
        default => {
            credential => {
                class         => 'Password',
                password_type => 'none',
            },
            store => { class => 'Proxy' }
        }
    }
 );

DESCRIPTION

This module makes it much easier to implement a custom authenication store. It delegates all the necessary method for user retrieval and session storage to a custom user class.

CONFIGURATION

user_class

Methods are delegated to this user class. It defaults to MyApp::User, where MyApp is the name of you application. The follwing methods have to be implemented in that class additionally to those mentioned in Catalyst::Authentication::User:

find_user ($c, $authinfo)

The second argument $authinfo is whatever was passed to $c->authenticate. If the user can be authenticated using $authinfo it has to return a new object of type MyApp::User or undef.

from_session ($c, $id)

Given a session id, this method returns an instance of the matching MyApp::User.

for_session ($c)

This has to return a unique identifier of the user object which will be used as second parameter to "from_session".

handles

 MyApp->config(
     'Plugin::Authentication' => {
        default => {
            credential => { ... },
            store => {
                class => 'Proxy',
                handles => {
                    find_user => 'find',
                },
            }
        }
    }
 );

Change the name of the authentication methods to something else.

SEE ALSO

Catalyst::Authentication::Store::DBIx::Class operates in the same way.
Catalyst::Authentication::User explains what a user class should look like.
Catalyst::Plugin::Authentication::Internals gives a good introduction into the authentication internals.

AUTHOR

Moritz Onken

COPYRIGHT AND LICENSE

This software is Copyright (c) 2011 by Moritz Onken.

This is free software, licensed under:

  The (three-clause) BSD License