NAME
    Catalyst::Authentication::Store::Tangram - A storage class for Catalyst
    authentication from a class stored in Tangram

SYNOPSIS
        use Catalyst qw/
            Authentication
        /;

        __PACKAGE__->config( authentication => {  
            default_realm => 'members',
            realms => {
                members => {
                    credential => {
                        class => 'Password',
                        password_field => 'password',
                        password_type => 'clear'
                    },
                    store => {
                        class => 'Tangram',
                        tangram_user_class => 'Users',
                        tangram_model => 'Tangram',
                        storage_method => 'storage', # $c->model('Tangram')->storage                
                    },
                },
            },
        });

        # Log a user in:
        sub login : Global {
            my ( $self, $c ) = @_;

            $c->authenticate({  
                email_address => $c->req->param('email_address'),
                password => $c->req->param('password'),
            });
        }

DESCRIPTION
    The Catalyst::Authentication::Store::Tangram class provides access to
    authentication information stored in a database via Tangram.

CONFIGURATION
    The Tangram authentication store is activated by setting the store
    config's class element to *Tangram* as shown above. See the
    Catalyst::Plugin::Authentication documentation for more details on
    configuring the store.

    The Tangram storage module has several configuration options

        authentication => {  
            default_realm => 'members',
            realms => {
                members => {
                    credential => {
                        # ...
                    },
                    store => {
                        class => 'Tangram',
                        user_class => 'Users',
                        tangram_model => 'Tangram',
                        storage_method => 'storage', # $c->model('Tangram')->storage                
                    },
                },
            },
        }
    
    class
        Class is part of the core Catalyst::Plugin::Authentication module,
        it contains the class name of the store to be used.

    tangram_user_class
        Contains the class name of the class persisted in your Tangram
        schema to use as the source for user information. This config item
        is REQUIRED. This class name is used to get a Tangram remote object
        when constructing a search for your user when first authenticating,
        and also this is the class which the ->load method is called on to
        restore the user from a session.

    tangram_model
        Contains the class name (as passed to $c->model()) of the Tangram
        model to use as the source for user information. This config item is
        REQUIRED. The *storage_method* method will be invoked on this class
        to get the Tangram::Storage instance to restore the user from.

    storage_method
        Contains the method to call on the *tangram_model* to retrieve the
        instance of Tangram::Storage which users are looked up from.

    user_class
        Contains the class which the user object is blessed into. This class
        is usually Catalyst::Authentication::Store::Tangram::User, but you
        can sub-class that class and have your subclass used instead by
        setting this configuration parameter. You will not need to use this
        setting unless you are doing unusual things with the user class.

METHODS
  new ( $config, $app, $realm )
    Simple constructor, returns a blessed reference to the store object
    instance.

  find_user ( $authinfo, $c )
    *$auth_info* is expected to be a hash with the keys being field names on
    your Tangram user object, and the values being what those fields should
    be matched against. A tangram select will be built from the supplied
    auth info, and this select is used to retrieve the user from Tangram.

  for_session ( $c, $user )
    This method returns the Tangram ID for the user, as that is all that is
    necessary to be persisted in the session to restore the user.

  from_session ( $c, $frozenuser )
    This method is called whenever a user is being restored from the
    session. $frozenuser contains the Tangram ID of the user to restore.

  user_supports ( $feature, ... )
    Returns false.

AUTHOR
    Tomas Doran, <bobtfish at bobtfish dot net>

    With thanks to state51, my employer, for giving me the time to work on
    this.

BUGS
    All complex software has bugs, and I'm sure that this module is no
    exception.

    Please report bugs through the rt.cpan.org bug tracker.

COPYRIGHT
    Copyright (c) 2008, state51. Some rights reserved.

LICENSE
    This module is free software; you can use, redistribute, and modify it
    under the same terms as Perl 5.8.x.