Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision a4c8924a

Von Bernd Bleßmann vor mehr als 4 Jahren hinzugefügt

  • ID a4c8924a3a105f8b4ba750a5911ed0099f9bb4bc
  • Vorgänger d3cfa206
  • Nachfolger a21cec52

Login: Callback setzen und berücksichtigen, wenn abgemeldet

Wenn ein Ziel innerhalb des Programms aufgerufen wird (z.B. aus einem
Link, den man zugschickt bekommt) und man nicht eingeloggt ist, so
wird man zu dem Ziel weitergeleitet, nachdem man sich eingeloggt hat.

Unterschiede anzeigen:

SL/Dispatcher.pm
30 30
use SL::Form;
31 31
use SL::Helper::DateTime;
32 32
use SL::InstanceConfiguration;
33
use SL::MoreCommon qw(uri_encode);
33 34
use SL::Template::Plugin::HTMLFixes;
34 35
use SL::User;
35 36

  
......
291 292
    if (   (($script eq 'login') && !$action)
292 293
        || ($script eq 'admin')
293 294
        || (SL::Auth::SESSION_EXPIRED() == $session_result)) {
294
      $self->handle_login_error(script => $script, error => 'session');
295

  
295
      $self->handle_login_error(routing_type => $routing_type,
296
                                script       => $script,
297
                                controller   => $script_name,
298
                                action       => $action,
299
                                error        => 'session');
296 300
    }
297 301

  
298 302
    my %auth_result = $self->{auth_handler}->handle(
......
393 397
  my $action          = ($params{script} // '') =~ m/^admin/i ? 'Admin/login' : 'LoginScreen/user_login';
394 398
  $action            .= '&error=' . $params{error} if $params{error};
395 399

  
396
  print $::request->cgi->redirect("controller.pl?action=${action}");
400
  my $redirect_url = "controller.pl?action=${action}";
401

  
402
  if ($action =~ m/LoginScreen\/user_login/) {
403
    require SL::Controller::Base;
404
    my $controller = SL::Controller::Base->new;
405

  
406
    delete $params{error};
407
    delete @{ $::form }{ grep { m/^\{AUTH\}/ } keys %{ $::form } };
408
    my $callback   = $controller->url_for(%params, %{$::form});
409
    $redirect_url .= '&callback=' . uri_encode($callback);
410
  }
411

  
412
  print $::request->cgi->redirect($redirect_url);
397 413
  $self->end_request;
398 414
}
399 415

  

Auch abrufbar als: Unified diff