X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAuth%2FLDAP.pm;h=18c395e65ecd9087e7a0ffe617e3edaa7c429921;hb=2ef19c818a05b2baa2552ae5b4edbcc16bcfc986;hp=1b33de36a18635bb7f1b4b6494b2ee0f2acb52e9;hpb=5d23fb605bc40f699ab677e6ee13a7e498c9fb14;p=kivitendo-erp.git diff --git a/SL/Auth/LDAP.pm b/SL/Auth/LDAP.pm index 1b33de36a..18c395e65 100644 --- a/SL/Auth/LDAP.pm +++ b/SL/Auth/LDAP.pm @@ -2,6 +2,7 @@ package SL::Auth::LDAP; use English '-no_match_vars'; +use Scalar::Util qw(weaken); use SL::Auth::Constants qw(:all); use strict; @@ -17,6 +18,7 @@ sub new { my $self = {}; $self->{auth} = shift; + weaken $self->{auth}; bless $self, $type; @@ -25,6 +27,12 @@ sub new { return $self; } +sub reset { + my ($self) = @_; + $self->{ldap} = undef; + $self->{dn_cache} = { }; +} + sub _connect { $main::lxdebug->enter_sub(); @@ -41,20 +49,20 @@ sub _connect { $self->{ldap} = Net::LDAP->new($cfg->{host}, 'port' => $port); if (!$self->{ldap}) { - $main::form->error($main::locale->text('The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.', $cfg->{host}, $port)); + $main::form->error($main::locale->text('The LDAP server "#1:#2" is unreachable. Please check config/kivitendo.conf.', $cfg->{host}, $port)); } if ($cfg->{tls}) { my $mesg = $self->{ldap}->start_tls('verify' => 'none'); if ($mesg->is_error()) { - $main::form->error($main::locale->text('The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.')); + $main::form->error($main::locale->text('The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/kivitendo.conf.')); } } if ($cfg->{bind_dn}) { my $mesg = $self->{ldap}->bind($cfg->{bind_dn}, 'password' => $cfg->{bind_password}); if ($mesg->is_error()) { - $main::form->error($main::locale->text('Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.', $cfg->{bind_dn})); + $main::form->error($main::locale->text('Binding to the LDAP server as "#1" failed. Please check config/kivitendo.conf.', $cfg->{bind_dn})); } } @@ -178,6 +186,10 @@ sub can_change_password { return 0; } +sub requires_cleartext_password { + return 1; +} + sub change_password { return ERR_BACKEND; } @@ -192,11 +204,11 @@ sub verify_config { my $cfg = $self->{auth}->{LDAP_config}; if (!$cfg) { - $form->error($locale->text('config/authentication.pl: Key "LDAP_config" is missing.')); + $form->error($locale->text('config/kivitendo.conf: Key "authentication/ldap" is missing.')); } if (!$cfg->{host} || !$cfg->{attribute} || !$cfg->{base_dn}) { - $form->error($locale->text('config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".')); + $form->error($locale->text('config/kivitendo.conf: Missing parameters in "authentication/ldap". Required parameters are "host", "attribute" and "base_dn".')); } $main::lxdebug->leave_sub();