lemonldap-ng/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/FindUser.pm
2020-12-20 23:49:46 +01:00

52 lines
1.5 KiB
Perl

package Lemonldap::NG::Portal::Plugins::FindUser;
use strict;
use Mouse;
use Lemonldap::NG::Portal::Main::Constants qw(
PE_OK
PE_FIRSTACCESS
);
our $VERSION = '2.0.11';
extends 'Lemonldap::NG::Portal::Main::Plugin';
# INITIALIZATION
sub init {
my ($self) = @_;
my $imp = grep /::Plugins::Impersonation$/, $self->p->enabledPlugins;
$self->addUnauthRoute( finduser => 'provideUser', ['POST'] ) if $imp;
return 1;
}
# RUNNING METHOD
sub provideUser {
my ( $self, $req ) = @_;
$req->steps( ['findUser'] );
if ( my $error = $self->p->process($req) ) {
$self->logger->debug("Process returned error: $error");
return $req->error($error);
}
$req->mustRedirect(1);
return $self->p->do( $req, [ sub { PE_FIRSTACCESS } ] );
}
sub retreiveFindUserParams {
my ( $self, $req ) = @_;
my ( $params, $excludedParams ) = ( [], [] );
$self->logger->debug("FindUser: reading parameters...");
foreach ( sort keys %{ $self->conf->{findUserSearchingAttributes} } ) {
$self->logger->debug("Pushing param $_");
push @$params, { key => $_, value => $req->params($_) };
}
$self->logger->debug("FindUser: reading excluding parameters...");
foreach ( sort keys %{ $self->conf->{findUserExcludingAttributes} } ) {
$self->logger->debug("Pushing excluded param $_");
push @$excludedParams, { key => $_, value => $_->{value} };
}
return [ $params, $excludedParams ];
}
1;