76 lines
2.1 KiB
Perl
76 lines
2.1 KiB
Perl
# Check state plugin
|
|
#
|
|
# test if portal is well loaded. If user/pasword parameters are set, it tests
|
|
# also login process
|
|
|
|
package Lemonldap::NG::Portal::Plugins::CheckState;
|
|
|
|
use strict;
|
|
use Mouse;
|
|
use Lemonldap::NG::Portal;
|
|
|
|
our $VERSION = '2.0.14';
|
|
|
|
extends 'Lemonldap::NG::Portal::Main::Plugin';
|
|
|
|
# INITIALIZATION
|
|
|
|
sub init {
|
|
my ($self) = @_;
|
|
unless ( $self->conf->{checkStateSecret} ) {
|
|
$self->logger->error(
|
|
'checkStateSecret is required for "check state" plugin');
|
|
return 0;
|
|
}
|
|
$self->addUnauthRoute( checkstate => 'check', ['GET'] )
|
|
->addAuthRoute( checkstate => 'check', ['GET'] );
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub check {
|
|
my ( $self, $req ) = @_;
|
|
my @rep;
|
|
return $self->p->sendError( $req, 'Bad secret' )
|
|
unless ( $req->param('secret')
|
|
and $req->param('secret') eq $self->conf->{checkStateSecret} );
|
|
$req->steps( [ 'controlUrl', @{ $self->p->beforeAuth } ] );
|
|
my $res = $self->p->process($req);
|
|
if ( $res && $res > 0 ) {
|
|
push @rep, "Bad result before auth: $res";
|
|
}
|
|
|
|
if ( my $user = $req->param('user') and my $pwd = $req->param('password') )
|
|
{
|
|
$req->parameters->{user} = ($user);
|
|
$req->parameters->{password} = $pwd;
|
|
$req->data->{skipToken} = 1;
|
|
|
|
# This makes Auth::Choice use authChoiceAuthBasic if defined
|
|
$req->data->{_pwdCheck} = 1;
|
|
|
|
# Not launched methods:
|
|
# - "buildCookie" useless here
|
|
$req->steps( [
|
|
@{ $self->p->beforeAuth },
|
|
$self->p->authProcess,
|
|
@{ $self->p->betweenAuthAndData },
|
|
$self->p->sessionData,
|
|
@{ $self->p->afterData },
|
|
'storeHistory',
|
|
@{ $self->p->endAuth }
|
|
]
|
|
);
|
|
if ( $res = $self->p->process( $req, ) ) {
|
|
push @rep, "Bad result during auth: $res";
|
|
}
|
|
$self->p->deleteSession($req);
|
|
}
|
|
|
|
return $self->p->sendError( $req, join( ",\n", @rep ), 500 ) if (@rep);
|
|
return $self->p->sendJSONresponse( $req,
|
|
{ result => 1, version => $Lemonldap::NG::Portal::VERSION } );
|
|
}
|
|
|
|
1;
|