95 lines
2.5 KiB
Perl
95 lines
2.5 KiB
Perl
package Lemonldap::NG::Portal::Auth::Choice;
|
|
|
|
use strict;
|
|
use Mouse;
|
|
use Lemonldap::NG::Portal::Main::Constants qw(PE_OK PE_FIRSTACCESS PE_ERROR);
|
|
|
|
our $VERSION = '2.0.8';
|
|
|
|
extends 'Lemonldap::NG::Portal::Lib::Choice';
|
|
|
|
# INITIALIZATION
|
|
|
|
sub init {
|
|
return $_[0]->SUPER::init(0);
|
|
}
|
|
|
|
# RUNNING METHODS
|
|
|
|
sub _authCancel {
|
|
my ( $self, $req ) = @_;
|
|
delete $req->pdata->{_choice};
|
|
return $self->SUPER::_authCancel($req);
|
|
}
|
|
|
|
sub extractFormInfo {
|
|
my ( $self, $req ) = @_;
|
|
unless ( $self->checkChoice($req) ) {
|
|
$self->logger->debug("Initializing Auth modules...");
|
|
foreach my $mod ( values %{ $self->modules } ) {
|
|
if ( $mod->{AjaxInitScript} ) {
|
|
$self->logger->debug(
|
|
'Append ' . $mod->{Name} . ' init/script' )
|
|
if $mod->{Name};
|
|
$req->data->{customScript} .= $mod->AjaxInitScript;
|
|
}
|
|
if ( $mod->{InitCmd} ) {
|
|
$self->logger->debug(
|
|
'Launch ' . $mod->{Name} . ' init command' )
|
|
if $mod->{Name};
|
|
my $res = eval( $mod->{InitCmd} );
|
|
if ($@) {
|
|
$self->logger("Auth error: $@");
|
|
return PE_ERROR;
|
|
}
|
|
}
|
|
}
|
|
$self->setSecurity($req);
|
|
$self->logger->debug(
|
|
"Send init/script -> " . $req->data->{customScript} )
|
|
if $req->data->{customScript};
|
|
return PE_FIRSTACCESS;
|
|
}
|
|
|
|
my $res = $req->data->{enabledMods0}->[0]->extractFormInfo($req);
|
|
if ( $res > 0 ) {
|
|
$self->setSecurity($req);
|
|
delete $req->pdata->{_choice};
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
sub authenticate {
|
|
my $res = $_[1]->data->{enabledMods0}->[0]->authenticate( $_[1] );
|
|
delete $_[1]->pdata->{_choice} if ( $res > 0 );
|
|
return $res;
|
|
}
|
|
|
|
sub setAuthSessionInfo {
|
|
my ( $self, $req ) = @_;
|
|
$self->checkChoice($req) unless ( $req->data->{enabledMods0} );
|
|
my $res = $req->data->{enabledMods0}->[0]->setAuthSessionInfo($req);
|
|
delete $_[1]->pdata->{_choice} if ( $res > 0 );
|
|
return $res;
|
|
}
|
|
|
|
sub authLogout {
|
|
$_[0]->checkChoice( $_[1] ) or return PE_OK;
|
|
my $res = $_[1]->data->{enabledMods0}->[0]->authLogout( $_[1] );
|
|
delete $_[1]->pdata->{_choice};
|
|
delete $_[1]->data->{_authChoice};
|
|
return $res;
|
|
}
|
|
|
|
sub setSecurity {
|
|
my ( $self, $req ) = @_;
|
|
foreach my $mod ( values %{ $self->modules } ) {
|
|
if ( $mod->can('setSecurity') ) {
|
|
$mod->setSecurity($req);
|
|
last;
|
|
}
|
|
}
|
|
}
|
|
|
|
1;
|