]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Admin-Controller: Anlegen der Vollzugriffs-Gruppe gefixt
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 6 Jun 2019 10:29:59 +0000 (12:29 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 6 Jun 2019 10:29:59 +0000 (12:29 +0200)
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

index f3e634ff10ada47e559ea905df1e44f0c18917c5..e6200896cb6704d04b44d93a32d671a32cb2cc89 100644 (file)
@@ -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;
 
   $::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'),
     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;
   }
 
     )->save;
   }
 
-  $self->action_login;
+  $self->action_login unless $scripts_applied;
 }
 
 #
 }
 
 #