Fehler #578
Admin-Oberfläche: Fehler beim Anlegen eines Benutzers
100%
Beschreibung
Fehler: Can't call method "selectrow_array" on an undefined value at /var/www/kivitendo-bernd/SL/Controller/Admin.pm line 793.
Der Fehler tritt auf, wenn die Client-Datenbank noch nicht konfiguriert ist, da dann der Check, ob es den Benutzer schon mal gab, nicht funktioniert.
Meiner Meinung nach muss entweder die Funktion prüfen, ob es die Client-DB überhaupt gibt oder die Maske muss das Anlegen der Client-DB erzwingen (und das Vorhandensein prüfen) bevor der Benutzer angelegt wird.
Historie
Von Bernd Bleßmann vor mehr als 1 Jahr aktualisiert
Der Fehler tritt auch auf, wenn für einen Mandanten die Client-DB nicht mehr existiert.
Von Cem Aydin vor mehr als 1 Jahr aktualisiert
- Zugewiesen an wurde auf Cem Aydin gesetzt
Muss ich mir gelegentlich anschauen. Ich hatte das gesehen aber es war mir dann untergegangen..
Ich würde prüfen ob die Datenbank vorhanden ist, weiß aber noch nicht genau wie ich das machen kann.
Von Bernd Bleßmann vor mehr als 1 Jahr aktualisiert
Bernd Bleßmann schrieb:
Der Fehler tritt auch auf, wenn für einen Mandanten die Client-DB nicht mehr existiert.
Cem Aydin schrieb:
Muss ich mir gelegentlich anschauen. Ich hatte das gesehen aber es war mir dann untergegangen..
Ich würde prüfen ob die Datenbank vorhanden ist, weiß aber noch nicht genau wie ich das machen kann.
Ich habe testweise mal das probiert:
--- a/SL/Controller/Admin.pm +++ b/SL/Controller/Admin.pm @@ -169,6 +169,8 @@ sub action_save_user { my $timestamp = $now->format_cldr('yyyyMMddHHmmss'); my $dbh = $client->dbconnect(AutoCommit => 1); + next if !$dbh; + $dbh->do(qq|UPDATE employee SET login = ? WHERE login = ?;|,undef, $params->{'login'} . $timestamp, $params->{'login'}); $dbh->disconnect; @@ -789,6 +791,8 @@ sub check_loginname_previously_used() { my $clients = SL::DB::Manager::AuthClient->get_all_sorted; for my $client (@$clients) { my $dbh = $client->dbconnect(); + next if !$dbh; + my ($result) = $dbh->selectrow_array(qq|SELECT login FROM employee WHERE login = ?;|,undef, $self->user->{'login'}); $dbh->disconnect;
Keine Ahnung, ob ich das was übersehen.
Von Cem Aydin vor etwa 1 Jahr aktualisiert
- Status wurde von Neu zu Erledigt geändert
- % erledigt wurde von 0 zu 100 geändert
Habe das mal so übernommen, denke das funktioniert. Lokal bei mir getestet.
https://github.com/kivitendo/kivitendo-erp/pull/165
0475f05a31a73960f5836c3b39b5a20b1562069b
Grüsse, Danke