X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/77505215416ea4f09609f70360a4ab368d6f2aa5..dec3d0e25481e0392fa35bca6b10b315022220cd:/SL/Controller/LoginScreen.pm diff --git a/SL/Controller/LoginScreen.pm b/SL/Controller/LoginScreen.pm index e64ad0c78..385ce6fdd 100644 --- a/SL/Controller/LoginScreen.pm +++ b/SL/Controller/LoginScreen.pm @@ -10,6 +10,7 @@ use SL::Dispatcher::AuthHandler::User; use SL::DB::AuthClient; use SL::DB::AuthGroup; use SL::DB::AuthUser; +use SL::DB::Employee; use SL::Locale::String qw(t8); use SL::User; @@ -64,17 +65,24 @@ sub action_login { # if we get an error back, bale out my $result = User->new(login => $::myconfig{login})->login($::form); - # Database update available? - ::end_of_request() if -2 == $result; - # Auth DB needs update? If so log the user out forcefully. - if (-3 == $result) { + if (User::LOGIN_AUTH_DBUPDATE_AVAILABLE() == $result) { $::auth->destroy_session; return $self->render('login_screen/auth_db_needs_update'); } + # Basic client tables available? If not tell the user to create them + # and log the user out forcefully. + if (User::LOGIN_BASIC_TABLES_MISSING() == $result) { + $::auth->destroy_session; + return $self->render('login_screen/basic_tables_missing'); + } + + # Database update available? + ::end_of_request() if User::LOGIN_DBUPDATE_AVAILABLE() == $result; + # Other login errors. - if (0 > $result) { + if (User::LOGIN_OK() != $result) { $::auth->punish_wrong_login; return $self->show_login_form(error => $error); } @@ -82,9 +90,6 @@ sub action_login { # Everything is fine. $::auth->set_cookie_environment_variable(); - # TODO: Employees anlegen/checken - # $self->_ensure_employees_for_authorized_users_exist; - $self->_redirect_to_main_script; } @@ -106,6 +111,8 @@ sub keep_auth_vars_in_form { sub _redirect_to_main_script { my ($self) = @_; + $self->_ensure_employees_for_authorized_users_exist; + return $self->redirect_to($::form->{callback}) if $::form->{callback}; $self->redirect_to(controller => "login.pl", action => 'company_logo'); @@ -133,6 +140,23 @@ sub _redirect_to_main_script_if_already_logged_in { return 1; } +sub _ensure_employees_for_authorized_users_exist { + my ($self) = @_; + + my %employees_by_login = map { ($_->login => $_) } @{ SL::DB::Manager::Employee->get_all }; + + foreach my $user (@{ SL::DB::AuthClient->new(id => $::auth->client->{id})->load->users || [] }) { + my $user_config = $user->config_values; + my $employee = $employees_by_login{$user->login} || SL::DB::Employee->new(login => $user->login); + + $employee->update_attributes( + name => $user_config->{name}, + workphone => $user_config->{tel}, + deleted => 0, + ); + } +} + sub error_state { return { session => $::locale->text('The session is invalid or has expired.'),