Revision 7e619726
Von Moritz Bunkus vor etwa 4 Jahren hinzugefügt
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
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.