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.

DON'T SEE ALSO
    This module along with it's sub plugins deprecate a great number of
    other modules. These include Catalyst::Plugin::Authentication::Simple,
    Catalyst::Plugin::Authentication::CDBI.

    At the time of writing these plugins have not yet been replaced or
    updated, but should be eventually:
    Catalyst::Plugin::Authentication::OpenID,
    Catalyst::Plugin::Authentication::LDAP,
    Catalyst::Plugin::Authentication::CDBI::Basic,
    Catalyst::Plugin::Authentication::Basic::Remote

AUTHORS
    Yuval Kogman, "nothingmuch@woobling.org"

    Jess Robinson

    David Kamholz

COPYRIGHT & LICENSE
            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.

