The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Egg::Model::Auth::Base - Base class for AUTH controller.

SYNOPSIS

  package MyApp::Model::Auth::Hooo;
  use base qw/ Egg::Model::Auth::Base /;
  
  __PACKAGE__->config ( ....... );
  
  __PACKAGE__->setup_plugin( ...... );
  
  __PACKAGE__->setup_session( ...... );
  
  __PACKAGE__->setup_api( ...... );

DESCRIPTION

It is a base class to succeed to from the AUTH controller who outputs it with Egg::Helper::Model::Auth.

METHODS

Egg::Base and Egg::Component have been succeeded to.

setup_plugin ([PLUGIN_LIST])

It is made to use by registering Plugin system module in @ISA of this class.

PLUGIN_LIST is a list of the name of Plugin system module. The part of 'Egg::Model::Auth::Plugin' is omitted and specified.

  __PACKAGE__->setup_plugin(qw/ Keep /);

setup_session ([SESSION_NAME] => [COMP_LIST])

It is made to use by registering Session system module in @ISA of this class.

SESSION_NAME is a name of Session system module. The part of 'Egg::Model::Auth::Session' is omitted and specified.

  __PACKAGE__->setup_session('SessionKit');

COMP_LIST is passed by the list if there is a component module that wants to register in addition. The name that omits the part of 'Egg::Model::Auth' is specified.

  __PACKAGE__->setup_session( FileCache => qw/ Bind::Cookie /);

setup_api ([API_NAME] => [COMP_LIST])

It is made to use by registering API system module to API class.

  __PACKAGE__->setup_api('DBI');

Additionally, COMP_LIST is a list of the module name that wants to be built into API class. The name that omits the part of 'Egg::Model::Auth' is specified.

  __PACKAGE__->setup_api( File => qw/ Crypt::SHA1 /);

To use a different kind of API module at the same time, setup_api is described. two or more.

However, the same kind of API module cannot be used at the same time.

   __PACKAGE__->setup_api('DBI');
   __PACKAGE__->setup_api( File => qw/ Crypt::SHA1 / );
   
   # And, the API_NAME is specified by 'login_check' method.
   $e->model('auth::hooo')->login_check('dbi');

new

Constructor.

  my $auth= $e->model('auth_label_name');

api ([API_NAME])

API object set by 'setup_api' method is returned.

API_NAME passes the name passed to 'setup_api' method.

When API_NAME is total abbreviated, API object that default and has been treated is returned.

  my $api= $auth->api('File');

login_check ([API_NAME], [USER_ID], [PASSWORD])

The argument is passed to API object, the attestation check is done, and if it is correct, the mass of the attestation data is returned by the HASH reference. When the attestation session is begun, it is necessary to call this method.

API_NAME passes the name passed to 'setup_api' method. When API_NAME is total abbreviated, API object of default is used.

When USER_ID is omitted, the acquisition of form input data of 'id_param' is tried.

When PASSWORD is omitted, the acquisition of form input data of 'password_param' is tried.

  if (my $user= $auth->login_check('File', $user_id, $password)) {
     ...... It was possible to log it in.
  } else {
     ...... It is not possible to log it in.
  }

  # When you omit API.
  if (my $user= $auth->login_check($user_id, $password)) {
     ......
  } .....
  
  # It shortens further if ID and the password are obtained from the input of the form.
  if (my $user= $auth->login_check) {
     ......
  } ....

The content of the error can be acquired in 'is_error' and 'error_message' though 0 is returned when the attestation doesn't pass.

  if (my $user= $auth->login_check) {
     ......
  } else {
     # The error message buried under the template is set.
     $e->stash->{error_message}= $auth->error_message;
  }

The error message can be customized.

see Egg::Model::Auth.

is_login

The attestation of the session begun on 'login_check' method is returned.

The cross-check with API object of the interval set in 'interval' is done.

  if ($auth->is_login) {
    ...... The screen etc. only for the member are displayed.
  } else {
    return $e->finished(403);
  }

logout

It logs out annulling the attestation session.

  $auth->logout;
  $e->stash->{logout_message}= 'Thank you for use.';

user_name

ID under the attestation is returned.

If 'is_login' method has not been called yet, 'is_login' is called.

  if (my $user_name= $auth->user_name) {
     $e->stash->{message}= "Mr. ${user_name} hello.";
  } else {
     return $e->finished(403);
  }

group_check ([GROUP_NAME])

User's authority etc. under the attestation are checked.

Invalidity always returns if 'group_field' is not set by the configuration.

  $e->stash->{group_name}= 
     $auth->group_check('SYSOP') ? 'Manager' : 'General';

remove_session

The attestation session is annulled and 'reset' method is called. In a word the same thing as 'logout' method is done.

As for 'logout' method, the point to always return an effective value is different though this method always returns an invalid value.

  $auth->remove_session;

reset

Login in 'login_check' method is invalidated. However, the session is not annulled.

  $auth->reset;

get_bind_id, set_bind_id, remove_bind_id

Nothing is done.

see Egg::Model::Auth::Bind::Cookie.

data

HASH to refer to the data acquired after it attests it is restored.

It doesn't become, and do not change inside data about this data leading only, please.

  my $email= $auth->data->{email};

is_error

When failing in the attestation because of 'login_check' and 'is_login', the error code is returned.

error_message

When failing in the attestation because of 'login_check' and 'is_login', the error message is returned.

Please set 'error_messages' of the configuration to customize the error message.

see Egg::Model::Auth.

error ([ERROR_CODE])

ERROR_CODE is set in 'is_error' method, and the error message of correspondence is set in 'error_message' method. And, an invalid value is returned.

When the error message corresponding to passed ERROR_CODE is not obtained, 400 is set in is_error, and ERROR_CODE is set in 'error_message' method.

If 'is_error' has defined it, an invalid value has been returned without doing anything.

error_*

Besides, the method of returning the following error codes is prepared.

  • error_undefind_id = 100

  • error_invalid_id = 110

  • error_not_registered = 120

  • error_id_empty = 130

  • error_not_active = 140

  • error_undefind_password = 200

  • error_invalid_password = 210

  • error_password_empty = 220

  • error_mistake_password = 230

  • error_invalid_session = 300

  • error_innternal = 400

  • error_method_not_allowd = 500

  • error_forbidden = 510

SEE ALSO

Egg::Release, Egg::Model::Auth, Egg::Model::Auth::Base::API, Egg::Base, Egg::Component,

AUTHOR

Masatoshi Mizuno <lushe@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2008 Bee Flag, Corp. <http://egg.bomcity.com/>.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.