Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 74477782

Von Moritz Bunkus vor etwa 11 Jahren hinzugefügt

  • ID 7447778283539ba5f36a43c97fcea3bc4f551729
  • Vorgänger 9da45b82
  • Nachfolger 9e61cdfd

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.

Unterschiede anzeigen:

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