REST Backend (#1976)
This commit is contained in:
parent
5e8effcddd
commit
b075082970
|
@ -2,7 +2,7 @@ package Lemonldap::NG::Portal::UserDB::REST;
|
|||
|
||||
use strict;
|
||||
use Mouse;
|
||||
use JSON;
|
||||
use JSON qw(from_json to_json);
|
||||
use Lemonldap::NG::Portal::Main::Constants qw(
|
||||
PE_ERROR
|
||||
PE_OK
|
||||
|
@ -57,28 +57,61 @@ sub getUser {
|
|||
|
||||
sub findUser {
|
||||
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 ),
|
||||
my $plugin =
|
||||
$self->p->loadedModules->{"Lemonldap::NG::Portal::Plugins::FindUser"};
|
||||
my ( $searching, $excluding ) = $plugin->retreiveFindUserParams($req);
|
||||
eval { $self->p->_authentication->setSecurity($req) };
|
||||
return PE_OK unless scalar @$searching;
|
||||
|
||||
my $res;
|
||||
$searching = [
|
||||
map {
|
||||
{ $_->{key} => $_->{value} }
|
||||
} @$searching
|
||||
];
|
||||
$excluding = [
|
||||
map {
|
||||
{ $_->{key} => $_->{value} }
|
||||
} @$excluding
|
||||
];
|
||||
$res = eval {
|
||||
$self->restCall(
|
||||
$self->conf->{restUserDBUrl},
|
||||
{
|
||||
searchingAttributes => to_json($searching),
|
||||
(
|
||||
scalar @$excluding
|
||||
? excludingAttributes => to_json($excluding)
|
||||
: ()
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
if ($@) {
|
||||
$self->logger->error("UserDB REST error: $@");
|
||||
return PE_ERROR;
|
||||
}
|
||||
unless ( $res->{result} ) {
|
||||
$self->userLogger->info('FindUser: no user found from REST UserDB');
|
||||
return PE_OK;
|
||||
}
|
||||
|
||||
my $results = eval { from_json( $res->user, { allow_nonref => 1 } ) };
|
||||
if ($@) {
|
||||
$self->logger->error(
|
||||
"FindUser: received invalid JSON from REST UserDB $@");
|
||||
return PE_ERROR;
|
||||
}
|
||||
$self->logger->debug(
|
||||
'REST UserDB number of result(s): ' . scalar @$results );
|
||||
if ( scalar @$results ) {
|
||||
my $rank = rand( scalar @$results );
|
||||
$self->logger->debug("REST UserDB random rank: $rank");
|
||||
$self->userLogger->info(
|
||||
"FindUser: REST UserDB returns $results->[$rank]");
|
||||
$req->data->{findUser} = $results->[$rank];
|
||||
}
|
||||
|
||||
# }
|
||||
# );
|
||||
# };
|
||||
# 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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user