userdb — access user database functions
| Attribute | Pos. | Req. | Default | Description |
|---|---|---|---|---|
| function | Yes | Yes | ||
| profile |
default
|
UserDB profile | ||
| db | table | ||||
| nickname | nick | ||||
| show_message | 0 | whether to return message (success or error) | ||
| interpolate | 0 | interpolate output? | ||
| hide | 0 | Hide the tag return value? |
[userdb] provides access to UserDB functions.
[userdb logout] performs log out operation on the current
user account:
[userdb logout]
Usually, data stored in the session should be removed at the same time:
[userdb function=logout clear=1] [userdb function=logout clear_session=1] [userdb function=logout clear_cookie="MV_PASSWORD"]
clear=1 resets all value and scratch
variables initialized by the UserDB.
clear_session=1 forces the creation of an entirely new
session for the user.
clear_cookie=" expires
the cookie NAME"NAME.
Interchange 5.9.0:
Source: code/SystemTag/userdb.coretag
Lines: 16
# Copyright 2002-2007 Interchange Development Group and others # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. See the LICENSE file for details. # # $Id: userdb.coretag,v 1.5 2007-03-30 23:40:49 pajamian Exp $ UserTag userdb Order function UserTag userdb addAttr UserTag userdb attrAlias table db UserTag userdb attrAlias name nickname UserTag userdb PosNumber 1 UserTag userdb Version $Revision: 1.5 $ UserTag userdb MapRoutine Vend::UserDB::userdb
Source: lib/Vend/UserDB.pm
Lines: 2553
sub userdb {
my $function = shift;
my $opt = shift;
my %options;
if(ref $opt) {
%options = %$opt;
}
else {
%options = ($opt, @_);
}
my $status = 1;
my $user;
my $module = $Vend::Cfg->{UserControl} ? 'Vend::UserControl' : 'Vend::UserDB';
if($function eq 'login') {
$Vend::Session->{logged_in} = 0;
delete $Vend::Session->{username};
delete $Vend::Session->{groups};
undef $Vend::username;
undef $Vend::groups;
undef $Vend::admin;
$user = $module->new(%options);
unless (defined $user) {
$Vend::Session->{failure} = errmsg("Unable to access user database.");
return undef;
}
if ($status = $user->login(%options) ) {
if( $Vend::ReadOnlyCfg->{AdminUserDB}{$user->{PROFILE}} ) {
$Vend::admin = 1;
}
::update_user();
}
}
elsif($function eq 'new_account') {
$user = $module->new(%options);
unless (defined $user) {
$Vend::Session->{failure} = errmsg("Unable to access user database.");
return undef;
}
$status = $user->new_account(%options);
if($status and ! $options{no_login}) {
$Vend::Session->{logged_in} = 1;
$Vend::Session->{username} = $user->{USERNAME};
}
}
elsif($function eq 'logout') {
$user = $module->new(%options)
or do {
$Vend::Session->{failure} = errmsg("Unable to create user object.");
return undef;
};
$user->logout();
}
elsif (! $Vend::Session->{logged_in}) {
$Vend::Session->{failure} = errmsg("Not logged in.");
return undef;
}
elsif($function eq 'save') {
$user = $module->new(%options);
unless (defined $user) {
$Vend::Session->{failure} = errmsg("Unable to access user database.");
return undef;
}
$status = $user->set_values();
}
elsif($function eq 'load') {
$user = $module->new(%options);
unless (defined $user) {
$Vend::Session->{failure} = errmsg("Unable to access user database.");
return undef;
}
$status = $user->get_values();
}
else {
$user = $module->new(%options);
unless (defined $user) {
$Vend::Session->{failure} = errmsg("Unable to access user database.");
return undef;
}
eval {
$status = $user->$function(%options);
};
$user->{ERROR} = $@ if $@;
}
if(defined $status) {
delete $Vend::Session->{failure};
$Vend::Session->{success} = $user->{MESSAGE};
if($options{show_message}) {
$status = $user->{MESSAGE};
}
}
else {
$Vend::Session->{failure} = $user->{ERROR};
if($options{show_message}) {
$status = $user->{ERROR};
}
}
return $status unless $options{hide};
return;
}