X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/16f91f23cf017fab7e536a6f4b030cbbe0fb95c3..c781544686f9faf39259f1076297b0ec69aff6fc:/SL/Auth.pm diff --git a/SL/Auth.pm b/SL/Auth.pm index 76414e877..365ee2323 100644 --- a/SL/Auth.pm +++ b/SL/Auth.pm @@ -165,8 +165,12 @@ sub authenticate { sub store_credentials_in_session { my ($self, %params) = @_; - $params{password} = SL::Auth::Password->hash_if_unhashed(login => $params{login}, password => $params{password}) - unless $self->{authenticator}->requires_cleartext_password; + if (!$self->{authenticator}->requires_cleartext_password) { + $params{password} = SL::Auth::Password->hash_if_unhashed(login => $params{login}, + password => $params{password}, + look_up_algorithm => 1, + auth => $self); + } $self->set_session_value(login => $params{login}, password => $params{password}); } @@ -177,6 +181,19 @@ sub store_root_credentials_in_session { $self->set_session_value(rpw => SL::Auth::Password->hash_if_unhashed(login => 'root', password => $rpw)); } +sub get_stored_password { + my ($self, $login) = @_; + + my $dbh = $self->dbconnect; + + return undef unless $dbh; + + my $query = qq|SELECT password FROM auth."user" WHERE login = ?|; + my ($stored_password) = $dbh->selectrow_array($query, undef, $login); + + return $stored_password; +} + sub dbconnect { $main::lxdebug->enter_sub(2); @@ -376,8 +393,14 @@ sub can_change_password { sub change_password { $main::lxdebug->enter_sub(); - my $self = shift; - my $result = $self->{authenticator}->change_password(@_); + my ($self, $login, $new_password) = @_; + + my $result = $self->{authenticator}->change_password($login, $new_password); + + $self->store_credentials_in_session(login => $login, + password => $new_password, + look_up_algorithm => 1, + auth => $self); $main::lxdebug->leave_sub();