lemonldap-ng/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/REST.pm
2020-05-01 13:43:12 +02:00

70 lines
1.5 KiB
Perl

package Lemonldap::NG::Portal::UserDB::REST;
use strict;
use Mouse;
use JSON;
use Lemonldap::NG::Portal::Main::Constants qw(
PE_ERROR
PE_OK
PE_BADCREDENTIALS
);
extends 'Lemonldap::NG::Common::Module', 'Lemonldap::NG::Portal::Lib::REST';
our $VERSION = '2.0.2';
# INITIALIZATION
sub init {
my $self = shift;
# Add warning in log
unless ( $self->conf->{restUserDBUrl} ) {
$self->logger->error('No User REST URL given');
return 0;
}
return 1;
}
# RUNNING METHODS
sub getUser {
my ( $self, $req, %args ) = @_;
my $res;
$res = eval {
$self->restCall(
$self->conf->{restUserDBUrl},
{
( $args{useMail} ? 'mail' : 'user' ) => $req->user,
'useMail' => ( $args{useMail} ? JSON::true : JSON::false ),
}
);
};
if ($@) {
$self->logger->error("UserDB REST error: $@");
eval { $self->p->_authentication->setSecurity($req) };
return PE_ERROR;
}
unless ( $res->{result} ) {
$self->userLogger->warn( 'User ' . $req->user . ' not found' );
eval { $self->p->_authentication->setSecurity($req) };
return PE_BADCREDENTIALS;
}
$req->data->{restUserDBInfo} = $res->{info} || {};
return PE_OK;
}
sub setSessionInfo {
my ( $self, $req ) = @_;
$req->sessionInfo->{$_} = $req->data->{restUserDBInfo}->{$_}
foreach ( keys %{ $req->data->{restUserDBInfo} } );
PE_OK;
}
sub setGroups {
PE_OK;
}
1;