NAME
   Catalyst::Plugin::Authentication - Infrastructure plugin for the
   Catalyst authentication framework.

SYNOPSIS
       use Catalyst qw/
           Authentication
           Authentication::Store::Foo
           Authentication::Credential::Password
       /;

       # later on ...
       # ->login is provided by the Credential::Password module
       $c->login('myusername', 'mypassword');
       my $age = $c->user->age;
       $c->logout;

DESCRIPTION
   The authentication plugin provides generic user support. It is the basis
   for both authentication (checking the user is who they claim to be), and
   authorization (allowing the user to do what the system authorises them
   to do).

   Using authentication is split into two parts. A Store is used to
   actually store the user information, and can store any amount of data
   related to the user. Multiple stores can be accessed from within one
   application. Credentials are used to verify users, using the store,
   given data from the frontend.

   To implement authentication in a catalyst application you need to add
   this module, plus at least one store and one credential module.

   Authentication data can also be stored in a session, if the application
   is using the Catalyst::Plugin::Session module.

METHODS
   user
       Returns the currently logged in user or undef if there is none.

   user_exists
       Whether or not a user is logged in right now.

       The reason this method exists is that "<$c-"user>> may needlessly
       load the user from the auth store.

       If you're just going to say

               if ( $c->user_user ) {
                       # foo
               } else {
                       $c->forward("login");
               }

       it should be more efficient than "<$c-"user>> when a user is marked
       in the session but "$c->user" hasn't been called yet.

   logout
       Delete the currently logged in user from "user" and the session.

   get_user $uid
       Fetch a particular users details, defined by the given ID, via the
       default store.

CONFIGURATION
   use_session
       Whether or not to store the user's logged in state in the session,
       if the application is also using the Catalyst::Plugin::Session
       plugin. This value is set to true per default.

   store
       If multiple stores are being used, set the module you want as
       default here.

   stores
       If multiple stores are being used, you need to provide a name for
       each store here, as a hash, the keys are the names you wish to use,
       and the values are the the names of the plugins.

        # example
        __PACKAGE__->config( authentication => {
                               store => 'Catalyst::Plugin::Authentication::Store::HtPasswd',
                               stores => {
                                  'dbic' => 'Catalyst::Plugin::Authentication::Store::DBIC'
                                         }
                                                });

METHODS FOR STORE MANAGEMENT
   default_auth_store
       Return the store whose name is 'default'.

       This is set to "$c->config->{authentication}{store}" if that value
       exists, or by using a Store plugin:

               use Catalyst qw/Authentication Authentication::Store::Minimal/;

       Sets the default store to
       Catalyst::Plugin::Authentication::Store::Minimal::Backend.

   get_auth_store $name
       Return the store whose name is $name.

   get_auth_store_name $store
       Return the name of the store $store.

   auth_stores
       A hash keyed by name, with the stores registered in the app.

   auth_store_names
       A ref-hash keyed by store, which contains the names of the stores.

   register_auth_stores %stores_by_name
       Register stores into the application.

INTERNAL METHODS
   set_authenticated $user
       Marks a user as authenticated. Should be called from a
       "Catalyst::Plugin::Authentication::Credential" plugin after
       successful authentication.

       This involves setting "user" and the internal data in "session" if
       Catalyst::Plugin::Session is loaded.

   auth_restore_user $user
       Used to restore a user from the session, by "user" only when it's
       actually needed.

   save_user_in_session $user
       Used to save the user in a session.

   prepare
       Revives a user from the session object if there is one.

   setup
       Sets the default configuration parameters.

   *

SEE ALSO
   Catalyst::Plugin::Authentication::Credential::Password,
   Catalyst::Plugin::Authentication::Store::Minimal,
   Catalyst::Plugin::Authorization::ACL,
   Catalyst::Plugin::Authorization::Roles.

AUTHORS
   Yuval Kogman, "[email protected]"

   Jess Robinson

   David Kamholz

COPYRIGHT & LICNESE
           Copyright (c) 2005 the aforementioned authors. All rights
           reserved. This program is free software; you can redistribute
           it and/or modify it under the same terms as Perl itself.