Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 306bab93

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

  • ID 306bab93d71fdd18138717b3d33abd9d9372b79f
  • Vorgänger 12e76514

Login: blacklisting bei Callback für Redirect zum Ziel implementiert

Unterschiede anzeigen:

SL/Dispatcher.pm
if ( $action =~ m/LoginScreen\/user_login/
&& $params{action}
&& 'get' eq lc($ENV{REQUEST_METHOD})
&& !_is_callback_blacklisted(map {$_ => $params{$_}} qw(routing_type script controller action) )
) {
require SL::Controller::Base;
......
$self->end_request;
}
sub _is_callback_blacklisted {
my (%params) = @_;
# You can give a name only, then all actions are blackisted.
# Or you can give name and action, then only this action is blacklisted
# examples:
# {name => 'is', action => 'edit'}
# {name => 'Project', action => 'edit'},
my @script_blacklist = (
{name => 'admin'},
{name => 'login'},
);
my @controller_blacklist = (
{name => 'Admin'},
{name => 'LoginScreen'},
);
my ($name, $blacklist);
if ('old' eq ($params{routing_type} // '')) {
$name = $params{script};
$blacklist = \@script_blacklist;
} else {
$name = $params{controller};
$blacklist = \@controller_blacklist;
}
foreach my $bl (@$blacklist) {
return 1 if _is_name_action_blacklisted($bl->{name}, $bl->{action}, $name, $params{action});
}
return;
}
sub _is_name_action_blacklisted {
my ($blacklisted_name, $blacklisted_action, $name, $action) = @_;
return 1 if ($name // '') eq $blacklisted_name && !$blacklisted_action;
return 1 if ($name // '') eq $blacklisted_name && ($action // '') eq $blacklisted_action;
return;
}
sub unrequire_bin_mozilla {
my $self = shift;
return unless $self->_interface_is_fcgi;

Auch abrufbar als: Unified diff