From c2efc4a8bdf71d5b1701b4f3d89704ca32fc9e07 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 6 Jun 2019 12:29:59 +0200 Subject: [PATCH] Admin-Controller: Anlegen der Vollzugriffs-Gruppe gefixt MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Nach dem Anlegen einer neuen Auth-DB und neuer Session-Tabellen sollte eigenlich auch eine Gruppe namens »Vollzugriff« angelegt werden, die Zugriff auf alle Funktionen bekommt — wurde sie aber nicht. Es gab gleich zwei Probleme mit dem Code: 1. Die Funktion »apply_dbupgrade_scripts« gab nach dem Anlegen der Session-Tabellen den Wert 1 zurück (im Sinne von »es wurden DB-Upgrade-Scripte angewandt«). Das hat der aufrufende Code aber als Gelegenheit genutzt, um den Request zu beenden, bevor der Code zur Prüfung, ob es schon Gruppen gibt, überhaupt ausgeführt wurde. Hintergrund ist, dass »SL::DBUpgrade2->apply_admin_dbupgrade_scripts« selber schon eine Webseite rendert und die aufrufende Funktion im Controller das dann nicht auch noch machen wollte. Doof nur, dass diese Funktion im Controller dann nie wieder aufgerufen wurde. 2. Der Test, ob es schon eine Gruppe gibt oder nicht, war falsch. Der Code sollte eigentlich eine beliebige Gruppe auslesen und der Variablen »$group« zuweisen. Was der Code aber gemacht hat, war eine Referenz auf ein leeres Array der Variablen zuzuweisen. Der nachfolgende Check auf »ist $group nicht gesetzt?« hat dann natürlich nicht gegriffen, denn auch eine leere Array-Referenz ist im Perl-Sinne wahr. --- SL/Controller/Admin.pm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SL/Controller/Admin.pm b/SL/Controller/Admin.pm index f3e634ff1..e6200896c 100644 --- a/SL/Controller/Admin.pm +++ b/SL/Controller/Admin.pm @@ -84,10 +84,9 @@ sub action_create_auth_tables { $::auth->set_session_value('admin_password', $::lx_office_conf{authentication}->{admin_password}); $::auth->create_or_refresh_session; - return if $self->apply_dbupgrade_scripts; + my $scripts_applied = $self->apply_dbupgrade_scripts; - my $group = (SL::DB::Manager::AuthGroup->get_all(limit => 1))[0]; - if (!$group) { + if (! SL::DB::Manager::AuthGroup->get_all_count) { SL::DB::AuthGroup->new( name => t8('Full Access'), description => t8('Full access to all functions'), @@ -95,7 +94,7 @@ sub action_create_auth_tables { )->save; } - $self->action_login; + $self->action_login unless $scripts_applied; } # -- 2.20.1