
Catalyst::Plugin::Authentication::CDBI - CDBI Authentication for Catalyst

use Catalyst 'Authentication::CDBI';
__PACKAGE__->config->{authentication} = (
user_class => 'PetStore::Model::CDBI::Customer',
user_field => 'email',
password_field => 'password',
password_hash => 'SHA',
role_class => 'PetStore::Model::CDBI::Role',
user_role_class => 'PetStore::Model::CDBI::CustomerRole',
user_role_user_field => 'customer'
);
$c->login( $user, $password );
$c->logout;
$c->session_login( $user, $password );
$c->session_logout;
$c->roles(qw/customer admin/);
CREATE TABLE customer (
id INTEGER PRIMARY KEY,
email TEXT,
password TEXT
);
CREATE TABLE role (
id INTEGER PRIMARY KEY,
name TEXT
);
CREATE TABLE customer_role (
id INTEGER PRIMARY KEY,
customer INTEGER REFERENCES customer,
role INTEGER REFERENCES role
);

Note that this plugin requires a session plugin like Catalyst::Plugin::Session::FastMmap.
Attempt to authenticate a user. Takes username/password as arguments,
$c->login( $user, $password );
User remains authenticated until end of request.
If your passwords are stored as hashes, specify a password_hash value when setting up your authentication hash. Supported values are SHA and MD5.
Log out the user. will not clear the session, so user will still remain logged in at next request unless session_logout is called.
check for permissions. used by the 'roles' function.
Check permissions for roles and return true or false.
$c->roles(qw/foo bar/);
Returns an arrayref containing the verified roles.
my @roles = @{ $c->roles };
Persistently login the user. The user will remain logged in until he clears the session himself, or session_logout is called.
$c->session_login( $user, $password );
Session logout. will delete the user object from the session.
sets $c->request->{user} from session.
sets up $c->config->{authentication}.
Takes an arrayref of roles and checks if user has the supplied roles. Returns 1/0.


Sebastian Riedel, sri@cpan.org Marcus Ramberg, mramberg@cpan.org

This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.