Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 22efd8a7

Von Moritz Bunkus vor fast 13 Jahren hinzugefügt

  • ID 22efd8a7bcfbeaca36f0f703b3f6bbbe90ff08dc
  • Vorgänger caf43807
  • Nachfolger 1e1a8a24

Login-Maske: Zu Menu redirecten falls bereits eingeloggt

Wenn man bereits eingeloggt ist und irgendwo im Programm zu login.pl
redirectet wird (z.B. beim Speichern der Benutzereinstellungen), so
wurde durch die Umstellung des Loginmechanismusses neulich leider die
Loginmaske erneut angezeigt, obwohl eine anständig authentifizierte
Session vorliegt.

Unterschiede anzeigen:

SL/Controller/LoginScreen.pm
sub action_user_login {
my ($self) = @_;
# If the user is already logged in then redirect to the proper menu
# script.
return if $self->_redirect_to_main_script_if_already_logged_in;
# Otherwise show the login form.
$self->render('login_screen/user_login');
}
......
# Everything is fine.
$::auth->set_cookie_environment_variable();
$self->_redirect_to_main_script($user);
}
#
# settings
#
sub get_auth_level {
return 'none';
}
sub keep_auth_vars_in_form {
return 1;
}
#
# private methods
#
sub _redirect_to_main_script {
my ($self, $user) = @_;
return $self->redirect_to($::form->{callback}) if $::form->{callback};
my %style_to_script_map = (
......
$self->redirect_to(controller => "menu${menu_script}.pl", action => 'display');
}
#
# settings
#
sub get_auth_level {
return 'none';
}
sub _redirect_to_main_script_if_already_logged_in {
my ($self) = @_;
# Get 'login' from valid session.
my $login = $::auth->get_session_value('login');
return unless $login;
# See whether or not the user exists in the database.
my %user = $::auth->read_user(login => $login);
return if ($user{login} || '') ne $login;
# Check if the session is logged in correctly.
return if SL::Auth::OK() != $::auth->authenticate($login, undef);
$::auth->create_or_refresh_session;
$::auth->delete_session_value('FLASH');
$self->_redirect_to_main_script(\%user);
sub keep_auth_vars_in_form {
return 1;
}

Auch abrufbar als: Unified diff