Provided by: libcatalyst-modules-perl_47_all bug

NAME

       Catalyst::Authentication::Realm::SimpleDB - A simplified Catalyst authentication
       configurator.

SYNOPSIS

           use Catalyst qw/
               Authentication
           /;

           __PACKAGE__->config->{'Plugin::Authentication'} =
               {
                   default => {
                       class      => 'SimpleDB',
                       user_model => 'MyApp::Schema::Users',
                   }
               }

           # later on ...
           $c->authenticate({ username => 'myusername',
                              password => 'mypassword' });

           my $age = $c->user->get('age');

           $c->logout;

DESCRIPTION

       The Catalyst::Authentication::Realm::SimpleDB provides a simple way to configure Catalyst
       Authentication when using the most common configuration of a password protected user
       retrieved from an SQL database.

CONFIGURATION

       The SimpleDB Realm class configures the Catalyst authentication system based on the
       following:

       •   Your user data is stored in a table that is accessible via
           $c->model($cfg->{user_model});

       •   Your passwords are stored in the 'password' field in your users table and are not
           encrypted.

       •   Your roles for users are stored in a separate table and are directly accessible via a
           DBIx::Class relationship called 'roles' and the text of the role is stored in a field
           called 'role' within the role table.

       •   Your user information is stored in the session once the user is authenticated.

       For the above usage, only one configuration option is necessary, 'user_model'.  user_model
       should contain the class name of your user class. See the "PREPARATION" section for info
       on how to set up your database for use with this module.

       If your system differs from the above, some minor configuration may be necessary. The
       options available are detailed below. These options match the configuration options used
       by the underlying credential and store modules.  More information on these options can be
       found in Catalyst::Authentication::Credential::Password and
       Catalyst::Authentication::Store::DBIx::Class.

       user_model
           Contains the class name (as passed to $c->model() ) of the DBIx::Class schema to use
           as the source for user information.  This config item is REQUIRED.

       password_field
           If your password field is not 'password' set this option to the name of your password
           field.  Note that if you change this to, say 'users_password' you will need to use
           that in the authenticate call:

               $c->authenticate({ username => 'bob', users_password => 'foo' });

       password_type
           If the password is not stored in plaintext you will need to define what format the
           password is in.  The common options are crypted and hashed.  Crypted uses the standard
           unix crypt to encrypt the password.  Hashed uses the Digest modules to perform
           password hashing.

       password_hash_type
           If you use a hashed password type - this defines the type of hashing. See
           Catalyst::Authentication::Credential::Password for more details on this setting.

       role_column
           If your users roles are stored directly in your user table, set this to the column
           name that contains your roles.  For example, if your user table contains a field
           called 'permissions', the value of role_column would be 'permissions'.  NOTE: If
           multiple values are stored in the role column, they should be space or pipe delimited.

       role_relation and role_field
           These define an alternate role relationship name and the column that holds the role's
           name in plain text.  See "CONFIGURATION" in
           Catalyst::Authentication::Store::DBIx::Class for more details on these settings.

       use_userdata_from_session
           This is a simple 1 / 0 setting which determines how a user's data is saved / restored
           from the session.  If it is set to 1, the user's complete information (at the time of
           authentication) is cached between requests.  If it is set to 0, the users information
           is loaded from the database on each request.

PREPARATION

       This module makes several assumptions about the structure of your database.  Below is an
       example of a table structure which will function with this module in it's default
       configuration. You can use this table structure as-is or add additional fields as
       necessary. NOTE that this is the default SimpleDB configuration only. Your table structure
       can differ significantly from this when using the DBIx::Class Store directly.

           --
           -- note that you can add any additional columns you require to the users table.
           --
           CREATE TABLE users (
                   id            INTEGER PRIMARY KEY,
                   username      TEXT,
                   password      TEXT,
           );

           CREATE TABLE roles (
                   id   INTEGER PRIMARY KEY,
                   role TEXT
           );
           CREATE TABLE user_roles (
                   user_id INTEGER,
                   role_id INTEGER,
                   PRIMARY KEY (user_id, role_id)
           );

       Also, after you have loaded this table structure into your DBIx::Class schema, please be
       sure that you have a many_to_many DBIx::Class relationship defined for the users to roles
       relation. Your schema files should contain something along these lines:

       "lib/MyApp/Schema/Users.pm":

           __PACKAGE__->has_many(map_user_role => 'MyApp::Schema::UserRoles', 'user_id');
           __PACKAGE__->many_to_many(roles => 'map_user_role', 'role');

       "lib/MyApp/Schema/UserRoles.pm":

           __PACKAGE__->belongs_to(role => 'MyApp::Schema::Roles', 'role_id');

MIGRATION

       If and when your application becomes complex enough that you need more features than
       SimpleDB gives you access to, you can migrate to a standard Catalyst Authentication
       configuration fairly easily.  SimpleDB simply creates a standard Auth config based on the
       inputs you give it.  The config SimpleDB creates by default looks like this:

           MyApp->config('Plugin::Authentication') = {
               default => {
                   credential => {
                       class => 'Password',
                       password_type => 'clear'
                   },
                   store => {
                       class => 'DBIx::Class',
                       role_relation => 'roles',
                       role_field => 'role',
                       use_userdata_from_session => '1',
                       user_model => $user_model_from_simpledb_config
                       }
                   }
           };

SEE ALSO

       This module relies on a number of other modules to do it's job.  For more information you
       can refer to the following:

       •   Catalyst::Manual::Tutorial::Authentication

       •   Catalyst::Plugin::Authentication

       •   Catalyst::Authentication::Credential::Password

       •   Catalyst::Authentication::Store::DBIx::Class

       •   Catalyst::Plugin::Authorization::Roles

perl v5.18.1                                2011-08Catalyst::Authentication::Realm::SimpleDB(3pm)