lemonldap-ng/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Choice.pm

95 lines
2.5 KiB
Perl
Raw Normal View History

2016-06-30 22:42:50 +02:00
package Lemonldap::NG::Portal::Auth::Choice;
use strict;
use Mouse;
use Lemonldap::NG::Portal::Main::Constants qw(PE_OK PE_FIRSTACCESS PE_ERROR);
2016-06-30 22:42:50 +02:00
our $VERSION = '2.0.8';
2017-02-28 21:53:19 +01:00
2016-06-30 22:42:50 +02:00
extends 'Lemonldap::NG::Portal::Lib::Choice';
2018-07-10 11:43:36 +02:00
# INITIALIZATION
2016-06-30 22:42:50 +02:00
sub init {
return $_[0]->SUPER::init(0);
}
2018-07-10 11:43:36 +02:00
# RUNNING METHODS
sub _authCancel {
my ( $self, $req ) = @_;
delete $req->pdata->{_choice};
return $self->SUPER::_authCancel($req);
}
2016-06-30 22:42:50 +02:00
sub extractFormInfo {
my ( $self, $req ) = @_;
2017-04-25 10:11:16 +02:00
unless ( $self->checkChoice($req) ) {
$self->logger->debug("Initializing Auth modules...");
2017-04-25 10:11:16 +02:00
foreach my $mod ( values %{ $self->modules } ) {
if ( $mod->{AjaxInitScript} ) {
2019-02-01 23:22:11 +01:00
$self->logger->debug(
'Append ' . $mod->{Name} . ' init/script' )
2019-02-05 23:12:17 +01:00
if $mod->{Name};
2019-02-02 17:34:44 +01:00
$req->data->{customScript} .= $mod->AjaxInitScript;
2019-02-01 23:22:11 +01:00
}
if ( $mod->{InitCmd} ) {
$self->logger->debug(
'Launch ' . $mod->{Name} . ' init command' )
2019-02-05 23:12:17 +01:00
if $mod->{Name};
my $res = eval( $mod->{InitCmd} );
if ($@) {
$self->logger("Auth error: $@");
return PE_ERROR;
}
}
2019-02-01 23:22:11 +01:00
}
2019-06-01 10:29:41 +02:00
$self->setSecurity($req);
2019-02-02 17:34:44 +01:00
$self->logger->debug(
"Send init/script -> " . $req->data->{customScript} )
2019-02-05 23:12:17 +01:00
if $req->data->{customScript};
2017-04-25 10:11:16 +02:00
return PE_FIRSTACCESS;
}
2019-06-01 10:29:41 +02:00
my $res = $req->data->{enabledMods0}->[0]->extractFormInfo($req);
if ( $res > 0 ) {
$self->setSecurity($req);
delete $req->pdata->{_choice};
}
return $res;
2016-06-30 22:42:50 +02:00
}
sub authenticate {
my $res = $_[1]->data->{enabledMods0}->[0]->authenticate( $_[1] );
delete $_[1]->pdata->{_choice} if ( $res > 0 );
return $res;
2016-06-30 22:42:50 +02:00
}
2016-12-01 23:25:05 +01:00
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;
2016-12-01 23:25:05 +01:00
}
2016-07-18 21:45:05 +02:00
sub authLogout {
2016-07-02 10:51:00 +02:00
$_[0]->checkChoice( $_[1] ) or return PE_OK;
2018-11-26 14:34:43 +01:00
my $res = $_[1]->data->{enabledMods0}->[0]->authLogout( $_[1] );
delete $_[1]->pdata->{_choice};
2018-11-28 11:37:21 +01:00
delete $_[1]->data->{_authChoice};
2018-11-26 14:34:43 +01:00
return $res;
2016-06-30 22:42:50 +02:00
}
2019-06-01 10:29:41 +02:00
sub setSecurity {
my ( $self, $req ) = @_;
foreach my $mod ( values %{ $self->modules } ) {
if ( $mod->can('setSecurity') ) {
$mod->setSecurity($req);
last;
}
}
}
2016-06-30 22:42:50 +02:00
1;