]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/Dispatcher.pm
Methoden zum Speichern von eindeutigen Keys in der Session
[kivitendo-erp.git] / SL / Dispatcher.pm
index 3913125be99dbe2a42bc2b9bbe64920a6233e884..6512f0312714fa9ff48c233a6c7bc05cb2f10aa3 100644 (file)
@@ -5,7 +5,6 @@ use strict;
 BEGIN {
   unshift @INC, "modules/override"; # Use our own versions of various modules (e.g. YAML).
   push    @INC, "modules/fallback"; # Only use our own versions of modules if there's no system version.
 BEGIN {
   unshift @INC, "modules/override"; # Use our own versions of various modules (e.g. YAML).
   push    @INC, "modules/fallback"; # Only use our own versions of modules if there's no system version.
-  push    @INC, "SL";               # FCGI won't find modules that are not properly named. Help it by inclduging SL
 }
 
 use CGI qw( -no_xhtml);
 }
 
 use CGI qw( -no_xhtml);
@@ -15,10 +14,11 @@ use Encode;
 use English qw(-no_match_vars);
 use SL::Auth;
 use SL::LXDebug;
 use English qw(-no_match_vars);
 use SL::Auth;
 use SL::LXDebug;
+use SL::LxOfficeConf;
 use SL::Locale;
 use SL::Common;
 use SL::Locale;
 use SL::Common;
+use SL::Form;
 use SL::Helper::DateTime;
 use SL::Helper::DateTime;
-use Form;
 use List::Util qw(first);
 use File::Basename;
 
 use List::Util qw(first);
 use File::Basename;
 
@@ -35,6 +35,11 @@ sub new {
   return $self;
 }
 
   return $self;
 }
 
+sub interface_type {
+  my ($self) = @_;
+  return $self->{interface} eq 'cgi' ? 'CGI' : 'FastCGI';
+}
+
 sub pre_request_checks {
   if (!$::auth->session_tables_present) {
     if ($::form->{script} eq 'admin.pl') {
 sub pre_request_checks {
   if (!$::auth->session_tables_present) {
     if ($::form->{script} eq 'admin.pl') {
@@ -66,8 +71,7 @@ sub show_error {
 }
 
 sub pre_startup_setup {
 }
 
 sub pre_startup_setup {
-  read_config 'config/lx_office.conf' => %::lx_office_conf;
-  _decode_recursively(\%::lx_office_conf);
+  SL::LxOfficeConf->read;
   _init_environment();
 
   eval {
   _init_environment();
 
   eval {
@@ -194,11 +198,11 @@ sub handle_request {
 
       $::locale = Locale->new($::myconfig{countrycode});
 
 
       $::locale = Locale->new($::myconfig{countrycode});
 
-      show_error('login/password_error', 'password') if SL::Auth::OK != $::auth->authenticate($::form->{login}, $::form->{password}, 0);
+      show_error('login/password_error', 'password') if SL::Auth::OK != $::auth->authenticate($::form->{login}, $::form->{password});
 
       $::auth->set_session_value('login', $::form->{login}, 'password', $::form->{password});
       $::auth->create_or_refresh_session;
 
       $::auth->set_session_value('login', $::form->{login}, 'password', $::form->{password});
       $::auth->create_or_refresh_session;
-      $::auth->delete_session_value('FLASH')->save_session();
+      $::auth->delete_session_value('FLASH');
       delete $::form->{password};
 
       if ($action) {
       delete $::form->{password};
 
       if ($action) {
@@ -228,7 +232,9 @@ sub handle_request {
   $::locale   = undef;
   $::form     = undef;
   $::myconfig = ();
   $::locale   = undef;
   $::form     = undef;
   $::myconfig = ();
-  Form::disconnect_standard_dbh unless $self->_interface_is_fcgi;
+  Form::disconnect_standard_dbh;
+  $::auth->expire_session_keys->save_session;
+  $::auth->dbdisconnect;
 
   $::lxdebug->end_request;
   $::lxdebug->leave_sub;
 
   $::lxdebug->end_request;
   $::lxdebug->leave_sub;
@@ -312,18 +318,6 @@ sub get_standard_filehandles {
   return $self->{interface} =~ m/f(?:ast)cgi/i ? $self->{request}->GetHandles() : (\*STDIN, \*STDOUT, \*STDERR);
 }
 
   return $self->{interface} =~ m/f(?:ast)cgi/i ? $self->{request}->GetHandles() : (\*STDIN, \*STDOUT, \*STDERR);
 }
 
-sub _decode_recursively {
-  my ($obj) = @_;
-
-  while (my ($key, $value) = each %{ $obj }) {
-    if (ref($value) eq 'HASH') {
-      _decode_recursively($value);
-    } else {
-      $obj->{$key} = decode('UTF-8', $value);
-    }
-  }
-}
-
 sub _init_environment {
   my %key_map = ( lib  => { name => 'PERL5LIB', append_path => 1 },
                   path => { name => 'PATH',     append_path => 1 },
 sub _init_environment {
   my %key_map = ( lib  => { name => 'PERL5LIB', append_path => 1 },
                   path => { name => 'PATH',     append_path => 1 },