X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/6c7e41458d2027f72901d16417a37648942f7445..d0fb3d4d75994271fcfe764ad3f7d7c4d314a068:/SL/Auth.pm diff --git a/SL/Auth.pm b/SL/Auth.pm index bf2a6a851..71a333f94 100644 --- a/SL/Auth.pm +++ b/SL/Auth.pm @@ -33,25 +33,57 @@ sub new { return $self; } +sub get_user_dbh { + my ($self, $login) = @_; + my %user = $self->read_user($login); + my $dbh = DBI->connect( + $user{dbconnect}, + $user{dbuser}, + $user{dbpasswd}, + { + pg_enable_utf8 => $::locale->is_utf8, + AutoCommit => 0 + } + ) or $::form->dberror; + + if ($user{dboptions}) { + $dbh->do($user{dboptions}) or $::form->dberror($user{dboptions}); + } + + return $dbh; +} + sub DESTROY { my $self = shift; $self->{dbh}->disconnect() if ($self->{dbh}); } +# form isn't loaded yet, so auth needs it's own error. +sub mini_error { + $::lxdebug->show_backtrace(); + + my ($self, @msg) = @_; + if ($ENV{HTTP_USER_AGENT}) { + print Form->create_http_response(content_type => 'text/html'); + print "
", join ('
', @msg), "
"; + } else { + print STDERR "Error: @msg\n"; + } + ::end_of_request(); +} + sub _read_auth_config { $main::lxdebug->enter_sub(); my $self = shift; - my $form = $main::form; - my $locale = $main::locale; - my $code; my $in = IO::File->new('config/authentication.pl', 'r'); if (!$in) { - $form->error($locale->text('The config file "config/authentication.pl" was not found.')); + my $locale = Locale->new('en'); + $self->mini_error($locale->text('The config file "config/authentication.pl" was not found.')); } while (<$in>) { @@ -62,7 +94,8 @@ sub _read_auth_config { eval $code; if ($@) { - $form->error($locale->text('The config file "config/authentication.pl" contained invalid Perl code:') . "\n" . $@); + my $locale = Locale->new('en'); + $self->mini_error($locale->text('The config file "config/authentication.pl" contained invalid Perl code:'), $@); } if ($self->{module} eq 'DB') { @@ -73,17 +106,20 @@ sub _read_auth_config { } if (!$self->{authenticator}) { - $form->error($locale->text('No or an unknown authenticantion module specified in "config/authentication.pl".')); + my $locale = Locale->new('en'); + $self->mini_error($locale->text('No or an unknown authenticantion module specified in "config/authentication.pl".')); } my $cfg = $self->{DB_config}; if (!$cfg) { - $form->error($locale->text('config/authentication.pl: Key "DB_config" is missing.')); + my $locale = Locale->new('en'); + $self->mini_error($locale->text('config/authentication.pl: Key "DB_config" is missing.')); } if (!$cfg->{host} || !$cfg->{db} || !$cfg->{user}) { - $form->error($locale->text('config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".')); + my $locale = Locale->new('en'); + $self->mini_error($locale->text('config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".')); } $self->{authenticator}->verify_config(); @@ -106,7 +142,9 @@ sub authenticate_root { $main::lxdebug->leave_sub(); - return $password eq $admin_password ? OK : ERR_PASSWORD; + return OK if $password eq $admin_password; + sleep 5; + return ERR_PASSWORD; } sub authenticate { @@ -116,7 +154,10 @@ sub authenticate { $main::lxdebug->leave_sub(); - return $self->{authenticator}->authenticate(@_); + my $result = $self->{authenticator}->authenticate(@_); + return OK if $result eq OK; + sleep 5; + return $result; } sub dbconnect { @@ -665,6 +706,8 @@ sub all_rights_full { ["--reports", $locale->text('Reports')], ["report", $locale->text('All reports')], ["advance_turnover_tax_return", $locale->text('Advance turnover tax return')], + ["--batch_printing", $locale->text("Batch Printing")], + ["batch_printing", $locale->text("Batch Printing")], ["--others", $locale->text("Others")], ["email_bcc", $locale->text("May set the BCC field when sending emails")], ["config", $locale->text("Change Lx-Office installation settings (all menu entries beneath 'System')")],