Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 7e619726

Von Moritz Bunkus vor etwa 4 Jahren hinzugefügt

  • ID 7e61972690cfa1f688ebd9770fcf9d100b9dfdd0
  • Vorgänger fe18b19f
  • Nachfolger 31f8f9aa

Employee-Controller: beim Gelöscht-Setzen Verknüpfung in Auth-DB lösen

Beim Anlegen von Benutzer*inen in der Auth-DB werden sie nicht
zwangsweise auch in der Mandanten-DB angelegt, z.B. wenn die in dem
Moment noch nicht existiert. Daher werden bei jedem Login in einem
Mandanten alle Benutzer*innen, die in dem Moment mit dem Mandanten
verknüpft sind, in der Mandanten-DB angelegt (falls noch nicht
existierend) und das »gelöscht«-Flag wieder entfernt.

Beim Löschen von Benutzer*innen aus dem Admin-Bereich heraus ist das
soweit auch OK, denn dann wird in der Auth-DB der Eintrag entfernt und
in der Mandanten-DB das Login auf »gelöscht« gesetzt.

Es gibt aber auch im Mandantenbereich einen Controller zum Bearbeiten
von Benutzer*innen, in dem das »gelöscht«-Flag gesetzt werden
kann. Und hier wurde bisher nur die Mandanten-DB angefasst, nicht aber
die Auth-DB. Wenn also hier ein(e) Benutzer*in auf »gelöscht« gesetzt
wird, so wurde beim nächsten Login in den Mandanten in der Auth-DB
nachgesehen, dort war der Account noch verknüpft, also wurde das
»gelöscht«-Flag wieder entfernt.

Fix ist, dass nun auch in der Auth-DB die Verknüpfung des Accounts mit
dem Mandanten entfernt wird. Der Account wird in der Auth-DB aber
nicht gelöscht, weil er ja auch noch auf andere Mandanten Zugriff
haben könnte.

Fix für #97.

Unterschiede anzeigen:

SL/Controller/Employee.pm
35 35
sub action_save {
36 36
  my ($self, %params) = @_;
37 37

  
38
  $self->{employee}->save;
38
  SL::DB->client->with_transaction(sub {
39
    1;
40

  
41
    $self->{employee}->save;
42

  
43
    if ($self->{employee}->deleted) {
44
      my $auth_user = SL::DB::Manager::AuthUser->get_first(login => $self->{employee}->login);
45
      if ($auth_user) {
46
        SL::DB::Manager::AuthClientUser->delete_all(
47
          where => [
48
            client_id => $::auth->client->{id},
49
            user_id   => $auth_user->id,
50
          ]);
51
      }
52
    }
53

  
54
    1;
55
  });
39 56

  
40 57
  flash('info', $::locale->text('Employee #1 saved!', $self->{employee}->safe_name));
41 58

  

Auch abrufbar als: Unified diff