NAME
Nitesi::Account::Manager - Account Manager for Nitesi Shop Machine
SYNOPSIS
$account = Nitesi::Account::Manager->new(provider_sub => \&account_providers,
session_sub => \&session);
$account->init_from_session;
$account->status(login_info => 'Please login before checkout',
login_continue => 'checkout');
$account->login(username => 'shopper@nitesi.biz', password => 'nevairbe');
$account->logout();
if ($account->exists('shopper@nitesi.biz')) {
$account->password(username => 'shopper@nitesi.biz', password => 'nevairbe');
}
$account->create(email => 'shopper@nitesi.biz');
# use this with caution!
$account->become('shopper@nitesi.biz');
DESCRIPTION
Nitesi's account manager transparently handles multiple providers for authentication, account data and permissions checks.
METHODS
init
Initializer called by instance class method.
providers
List with account providers.
init_from_session
Reads user information through session routine.
login
Perform login. Returns 1 in case of success and 0 in case of failure.
Leading and trailing spaces will be removed from username and password in advance.
logout
Perform logout.
Example:
$account->logout();
create
Creates account and returns uid for the new account in case of success.
Example:
$uid = $account->create(email => 'shopper@nitesi.biz');
The password is automatically generated unless you pass it to this method.
Example:
$uid = $account->create(email => 'shopper@nitesi.biz',
password => 'nevairbe');
delete
Delete account.
Example:
$account->delete('333');
uid
Retrieve user identifier of the current user, returns 0 if current user isn't authenticated.
Example:
$account->uid();
username
Retrieve username of the current user. Returns empty string if current user isn't authenticated. If you want to retrieve other user username, use $account->load.
Example:
$account->username();
roles
Retrieve roles of current user.
Example:
$account->roles();
has_role
Returns true if user is a member of the given role.
Example:
if ($account->has_role('admin') { print "Congratulations, you are the admin" };
permissions
Returns permissions as hash reference:
$perms = $account->permissions;
Returns permissions as list:
@perms = $account->permissions;
status
Helps you to redirect users properly on pages available only to authenticated users.
Example: Before login - Page available only if you are logged in (Step 1)
You are not logged in. You are on a page which is available only to those logged in. You set the message for users not logged in and url of the page where you send them after successful login.
$account->status(login_info => 'Please login before checkout', login_continue => 'checkout');
Example: At Login page (Step 2)
You retrieve the login message to make clear to user why they need to login (to access the page from step 1)
$account->status('login_info');
Example: After login (Step 3)
Retrieve the login_continue URL and send user to that URL (using redirect or something similar).
$account->status('login_continue');
exists
Check whether account exists.
Example:
if ($account->exists('shopper@nitesi.biz')) {
print "Account exists\n";
}
load
Returns account data for a given uid as hash.
Example:
$account->load('333');
password
Changes password for current account:
$account->password('nevairbe');
Changes password for other account:
$account->password(username => 'shopper@nitesi.biz',
password => 'nevairbe');
acl
ACL (Access list) check, see ACL::Lite for details.
Example:
if ( $account->acl( check => 'view_prices') {
print "You can see prices";
}
Example:
If you check multiple permissions at once, only one has to granted. The check will return the name of the first granted one in the list (left to right).
if ( $account->acl( check => [ qw/admin luka/ ] ) {
print "This is Luka's account. Only Luka and administrators can see it".
}
value
Retrieve or set account data.
Example: Retrieve city
$city = $account->value( 'city');
Example: Set city
$city = $account->value( city => 'Ljubljana');
last_login
Returns time of last login (before the current one) in seconds since epoch or undef if provider doesn't supply this information.
become
Become any user you want:
$acct->become('shopper@nitesi.biz');
Please use this method with caution.
Some parts of the system (DBI, LDAP,...) may choose not to support this method.
AUTHOR
Stefan Hornburg (Racke), <racke@linuxia.de>
LICENSE AND COPYRIGHT
Copyright 2011-2013 Stefan Hornburg (Racke) <racke@linuxia.de>.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.