lemonldap-ng/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/Demo.pm
2016-05-22 12:22:59 +00:00

100 lines
2.1 KiB
Perl

## @file
# Demo userDB mechanism
## @class
# Demo userDB mechanism class
package Lemonldap::NG::Portal::UserDB::Demo;
use strict;
use Mouse;
use Lemonldap::NG::Portal::Main::Constants qw(PE_OK PE_USERNOTFOUND);
extends 'Lemonldap::NG::Portal::Main::Module';
our $VERSION = '2.0.0';
## @apmethod int userDBInit()
# Check AuthDemo use
# @return Lemonldap::NG::Portal constant
sub init {
my $self = shift;
unless ( $self->p->getModule( undef, 'auth' ) =~ /Demo/ ) {
$self->p->error("Use UserDB::Demo only with Auth::Demo");
return 0;
}
# Sample accounts from Doctor Who characters
$self->{_demoAccounts} = {
'rtyler' => {
'uid' => 'rtyler',
'cn' => 'Rose Tyler',
'mail' => 'rtyler@badwolf.org',
},
'msmith' => {
'uid' => 'msmith',
'cn' => 'Mickey Smith',
'mail' => 'msmith@badwolf.org',
},
'dwho' => {
'uid' => 'dwho',
'cn' => 'Doctor Who',
'mail' => 'dwho@badwolf.org',
},
};
1;
}
## @apmethod int getUser()
# Check known accounts
# @return Lemonldap::NG::Portal constant
sub getUser {
my ( $self, $req ) = @_;
# Search by login
if ( $req->user ) {
return PE_OK
if ( defined $self->{_demoAccounts}->{ $req->user } );
}
# Search by mail
if ( $req->{mail} ) {
return PE_OK
if (
my $req->{user} =
grep { $self->{_demoAccounts}->{$_}->{mail} eq $req->{mail} }
keys %{ $self->{_demoAccounts} }
);
}
PE_USERNOTFOUND;
}
## @apmethod int setSessionInfo()
# Get sample data
# @return Lemonldap::NG::Portal constant
sub setSessionInfo {
my ( $self, $req ) = @_;
my %vars = ( %{ $self->conf->{exportedVars} },
%{ $self->conf->{demoExportedVars} } );
while ( my ( $k, $v ) = each %vars ) {
$req->{sessionInfo}->{$k} =
$self->{_demoAccounts}->{ $req->{user} }->{$v}
|| "";
}
PE_OK;
}
## @apmethod int setGroups()
# Do nothing
# @return Lemonldap::NG::Portal constant
sub setGroups {
PE_OK;
}
1;