46 lines
1.2 KiB
Perl
46 lines
1.2 KiB
Perl
package Lemonldap::NG::Portal::Password::DBI;
|
|
|
|
use strict;
|
|
use Mouse;
|
|
use Lemonldap::NG::Portal::Main::Constants qw(PE_PASSWORD_OK PE_ERROR);
|
|
|
|
extends 'Lemonldap::NG::Portal::Password::Base',
|
|
'Lemonldap::NG::Portal::Lib::DBI';
|
|
|
|
our $VERSION = '2.0.0';
|
|
|
|
sub init {
|
|
$_[0]->Lemonldap::NG::Portal::Password::Base::init
|
|
and $_[0]->Lemonldap::NG::Portal::Lib::DBI::init;
|
|
}
|
|
|
|
sub confirm {
|
|
my ( $self, $req, $pwd ) = @_;
|
|
return $self->check_password( $req->user, $pwd );
|
|
}
|
|
|
|
sub modifyPassword {
|
|
my ( $self, $req, $pwd ) = @_;
|
|
eval {
|
|
$self->dbh->prepare( 'UPDATE '
|
|
. $self->conf->{dbiAuthTable} . ' SET '
|
|
. $self->conf->{dbiAuthPasswordCol} . '='
|
|
. $self->hash_password( "?", $self->conf->{dbiAuthPasswordHash} )
|
|
. ' WHERE '
|
|
. $self->conf->{dbiAuthLoginCol}
|
|
. '=?' )->execute( $pwd, $req->user );
|
|
};
|
|
if ($@) {
|
|
|
|
# If connection isn't available, error is displayed by dbh()
|
|
$self->logger->error("DBI password modification error: $@")
|
|
if ( $self->_dbh );
|
|
return PE_ERROR;
|
|
}
|
|
else {
|
|
return PE_PASSWORD_OK;
|
|
}
|
|
}
|
|
|
|
1;
|