SessionValue: damit klarkommen, dass Auth-DB & Session-Tabellen nicht existieren
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 6 Jun 2019 10:23:34 +0000 (12:23 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 6 Jun 2019 10:23:34 +0000 (12:23 +0200)
Durch die Änderungen letztens, mit der Session-Werte auch bei parallel
laufenden kivitendo-Requests richtig erhalten bleiben, wurde
SessionValue so umgeschrieben, dass es davon ausgeht, dass sowohl die
Auth-DB als auch die Session-Tabellen immer existieren.

Dies ist jedoch während der Erstinstallation nicht der Fall. Diverse
Requests im Admin-Controller müssen ausgeführt werden können, damit
Auth-DB & Session-Tabellen über den Controller angelegt werden können.

Da der Admin-Auth-Handler aber auch mit Sessions funktionieren kann,
fragt er also Session-Werte ab; die wiederum versuchen,
SessionValue-Instanzen zu nutzen.

SessionValue prüft nun bewusst auf Präsenz der Session-Tabellen, bevor
es versucht, aus ihnen zu lesen.

Dies ist Teil des Fixes von #376.

SL/Auth/SessionValue.pm

index a3264e5..0950a46 100644 (file)
@@ -46,6 +46,7 @@ sub _fetch {
   my ($self) = @_;
 
   return $self if $self->{fetched};
+  return $self if !$self->{auth}->session_tables_present;
 
   my $dbh          = $self->{auth}->dbconnect;
   my $query        = qq|SELECT sess_value FROM auth.session_content WHERE (session_id = ?) AND (sess_key = ?)|;