Revision 74477782
Von Moritz Bunkus vor etwa 11 Jahren hinzugefügt
SL/Controller/LoginScreen.pm | ||
---|---|---|
111 | 111 |
sub _redirect_to_main_script { |
112 | 112 |
my ($self) = @_; |
113 | 113 |
|
114 |
$self->_ensure_employees_for_authorized_users_exist; |
|
115 |
|
|
116 | 114 |
return $self->redirect_to($::form->{callback}) if $::form->{callback}; |
117 | 115 |
|
118 | 116 |
$self->redirect_to(controller => "login.pl", action => 'company_logo'); |
... | ... | |
153 | 151 |
return 1; |
154 | 152 |
} |
155 | 153 |
|
156 |
sub _ensure_employees_for_authorized_users_exist { |
|
157 |
my ($self) = @_; |
|
158 |
|
|
159 |
my %employees_by_login = map { ($_->login => $_) } @{ SL::DB::Manager::Employee->get_all }; |
|
160 |
|
|
161 |
foreach my $user (@{ SL::DB::AuthClient->new(id => $::auth->client->{id})->load->users || [] }) { |
|
162 |
my $user_config = $user->config_values; |
|
163 |
my $employee = $employees_by_login{$user->login} || SL::DB::Employee->new(login => $user->login); |
|
164 |
|
|
165 |
$employee->update_attributes( |
|
166 |
name => $user_config->{name}, |
|
167 |
workphone => $user_config->{tel}, |
|
168 |
deleted => 0, |
|
169 |
); |
|
170 |
} |
|
171 |
} |
|
172 |
|
|
173 | 154 |
sub error_state { |
174 | 155 |
my %states = ( |
175 | 156 |
session => { warning => t8('The session has expired. Please log in again.') }, |
Auch abrufbar als: Unified diff
Einträge in employee aus User->login heraus aktualisieren
Vor der Mandanteneinführung war User->login bereits hierfür
verantwortlich. Dann wurde diese Funktionalität in den
Login-Controller verschoben. Allerdings kehrt die Ausführung in exakt
einem Fall nicht zum Logincontroller zurück: wenn noch
Datenbankupgrades eingespielt werden müssen.
In dem Fall werden die Updates eingespielt, dem User wird die
"Weiter"-Seite angezeigt, und von hier aus geht es direkt zum
company_logo.
User->login weiß daher als einzige Instanz, wann alle DB-Upgrades
User->installiert sind, und damit, wann RDBO-Instanzen sicher genutzt
User->werden können.
Daher die Funktionalität in die Employee-Manager-Klasse verschoben und
das Triggern der Funktion aus dem Login-Controller wieder zurück nach
User->login verschoben.
Fixt #2361.