Bei Loginfehlern das Menü nicht mitrendern
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 12 Sep 2012 09:08:23 +0000 (11:08 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 17 Oct 2012 13:57:30 +0000 (15:57 +0200)
SL/Controller/LoginScreen.pm
SL/Dispatcher.pm
SL/Dispatcher/AuthHandler/User.pm

index aace43a..c15cf3e 100644 (file)
@@ -19,7 +19,7 @@ sub action_user_login {
   return if $self->_redirect_to_main_script_if_already_logged_in;
 
   # Otherwise show the login form.
-  $self->render('login_screen/user_login', { no_menu => 1 });
+  $self->render('login_screen/user_login', { no_menu => 1 }, error => error_state($::form->{error}));
 }
 
 sub action_logout {
@@ -108,4 +108,11 @@ sub _redirect_to_main_script_if_already_logged_in {
   return 1;
 }
 
+sub error_state {
+  return {
+    session  => $::locale->text('The session is invalid or has expired.'),
+    password => $::locale->text('Incorrect password!'),
+  }->{$_[0]};
+}
+
 1;
index 43bf668..c67efa7 100644 (file)
@@ -81,7 +81,7 @@ sub show_error {
   $::form->{error}         = $::locale->text('The session is invalid or has expired.') if ($error_type eq 'session');
   $::form->{error}         = $::locale->text('Incorrect password!')                    if ($error_type eq 'password');
 
-  $::form->header;
+  $::form->header(no_menu => 1);
   print $::form->parse_html_template($template, \%params);
   $::lxdebug->leave_sub;
 
@@ -225,7 +225,9 @@ sub handle_request {
       ::run($session_result);
 
     } else {
-      show_error('login_screen/user_login', 'session') if SL::Auth::SESSION_EXPIRED == $session_result;
+      if (SL::Auth::SESSION_EXPIRED == $session_result) {
+        print $::request->{cgi}->redirect('controller.pl?action=LoginScreen/user_login&error=session');
+      }
 
       my %auth_result = $self->{auth_handler}->handle(
         routing_type => $routing_type,
index 150245c..a1b6486 100644 (file)
@@ -31,7 +31,7 @@ sub _error {
   my $self = shift;
 
   $::auth->punish_wrong_login;
-  SL::Dispatcher::show_error('login_screen/user_login', 'password', @_);
+  print $::request->{cgi}->redirect('controller.pl?action=LoginScreen/user_login&error=password');
 }
 
 1;