Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c2efc4a8

Von Moritz Bunkus vor mehr als 5 Jahren hinzugefügt

  • ID c2efc4a8bdf71d5b1701b4f3d89704ca32fc9e07
  • Vorgänger 3094dbe3
  • Nachfolger 4aa43898

Admin-Controller: Anlegen der Vollzugriffs-Gruppe gefixt

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.

Unterschiede anzeigen:

SL/Controller/Admin.pm
84 84
  $::auth->set_session_value('admin_password', $::lx_office_conf{authentication}->{admin_password});
85 85
  $::auth->create_or_refresh_session;
86 86

  
87
  return if $self->apply_dbupgrade_scripts;
87
  my $scripts_applied = $self->apply_dbupgrade_scripts;
88 88

  
89
  my $group = (SL::DB::Manager::AuthGroup->get_all(limit => 1))[0];
90
  if (!$group) {
89
  if (! SL::DB::Manager::AuthGroup->get_all_count) {
91 90
    SL::DB::AuthGroup->new(
92 91
      name        => t8('Full Access'),
93 92
      description => t8('Full access to all functions'),
......
95 94
    )->save;
96 95
  }
97 96

  
98
  $self->action_login;
97
  $self->action_login unless $scripts_applied;
99 98
}
100 99

  
101 100
#

Auch abrufbar als: Unified diff