lemonldap-ng/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Radius.pm
Christophe Maudoux 635e75c1b6 Perl critic
2021-02-01 22:30:37 +01:00

71 lines
1.3 KiB
Perl

package Lemonldap::NG::Portal::Auth::Radius;
use strict;
use Mouse;
use Authen::Radius;
use Lemonldap::NG::Portal::Main::Constants qw(
PE_BADCREDENTIALS
PE_OK
PE_RADIUSCONNECTFAILED
);
extends qw(Lemonldap::NG::Portal::Auth::_WebForm);
our $VERSION = '2.0.12';
# PROPERTIES
has radius => ( is => 'rw' );
has authnLevel => (
is => 'rw',
lazy => 1,
default => sub {
$_[0]->conf->{radiusAuthnLevel};
}
);
sub initRadius {
$_[0]->radius(
Authen::Radius->new(
Host => $_[0]->conf->{radiusServer},
Secret => $_[0]->conf->{radiusSecret}
)
);
}
# INITIALIZATION
sub init {
my $self = shift;
unless ( $self->initRadius ) {
$self->error('Radius connect failed');
}
return 1;
}
# RUNNING METHODS
sub authenticate {
my ( $self, $req ) = @_;
$self->initRadius unless ( $self->radius );
unless ( $self->radius ) {
$self->setSecurity($req);
return PE_RADIUSCONNECTFAILED;
}
my $res = $self->radius->check_pwd( $req->user, $req->data->{password} );
unless ( $res == 1 ) {
$self->userLogger->warn("Unable to authenticate $req->{user} !");
$self->setSecurity($req);
return PE_BADCREDENTIALS;
}
return PE_OK;
}
sub authLogout {
return PE_OK;
}
1;