NAME

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

SYNOPSIS

use Catalyst 'Authentication::CDBI';
__PACKAGE__->config->{authentication} = {
    user_class           => 'PetStore::Model::CDBI::Customer',
    user_field           => 'email',
    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
);

DESCRIPTION

This plugin allows you to authenticate your web users using database tables accessed through Class::DBI classes.

Note that this plugin requires a session plugin such as Catalyst::Plugin::Session::FastMmap.

This module is now well past the teatime of it's lifespan, and no new features will be added. For new applications, you probably want to look at Catalyst::Plugin::Authentication and friends instead

CONFIGURATION

This plugin is configured by passing an "authentication" hash reference to your application's config method. The following keys are supported:

user_class

the name of the class that represents a user object (no default)

user_field

the name of the column holding the user identifier (defaults to "user")

password_field

the name of the column holding the user's password (defaults to "password")

password_hash

specifies the hashing method for password values; one of: SHA or MD5 (the values are not case-sensitive and the default is empty, i.e. no hashing).

role_class

the name of the role class

role_field

name of the role field

user_role_class
user_role_user_field

(defaults to "uer")

user_role_role_field

(defaults to "role")

METHODS

login

Attempt to authenticate a user. Takes username/password as arguments,

$c->login( $user, $password );

The user remains authenticated until end of request. See session_login for persistent login.

logout

Log out the user. will not clear the session, so user will still remain logged in at next request unless session_logout is called.

process_permission

check for permissions. used by the 'roles' function.

roles

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 };
session_login

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

Session logout. will delete the user object from the session.

EXTENDED METHODS

prepare_action

sets $c->request->{user} from session.

setup

sets up $c->config->{authentication}.

OVERLOADED METHODS

process_roles

Takes an arrayref of roles and checks if user has the supplied roles. Returns 1/0.

SEE ALSO

Catalyst, Catalyst::Plugin::Session::FastMmap

AUTHOR

Sebastian Riedel <sri@cpan.org>, Marcus Ramberg <mramberg@cpan.org>, Andrew Ford <a.ford@ford-mason.co.uk>

COPYRIGHT

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