X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/6afd06adfeb66b481b7240637351a34a41e702d1..2ecfde54bd40a15f430010faa28ec81383e4eec6:/SL/Dispatcher/AuthHandler.pm diff --git a/SL/Dispatcher/AuthHandler.pm b/SL/Dispatcher/AuthHandler.pm index 60dc63720..449d68492 100644 --- a/SL/Dispatcher/AuthHandler.pm +++ b/SL/Dispatcher/AuthHandler.pm @@ -5,18 +5,26 @@ use strict; use parent qw(Rose::Object); use SL::Dispatcher::AuthHandler::Admin; +use SL::Dispatcher::AuthHandler::None; use SL::Dispatcher::AuthHandler::User; +my %valid_auth_levels = map { ($_ => 1) } qw(user admin none); + sub handle { my ($self, %param) = @_; my $auth_level = $self->get_auth_level(%param); + my $handler_name = "SL::Dispatcher::AuthHandler::" . ucfirst($auth_level); $self->{handlers} ||= {}; $self->{handlers}->{$handler_name} ||= $handler_name->new; - $self->{handlers}->{$handler_name}->handle; + my $ok = $self->{handlers}->{$handler_name}->handle(%param); - return $auth_level; + return ( + auth_level => $auth_level, + keep_auth_vars => $self->get_keep_auth_vars(%param), + auth_ok => $ok, + ); } sub get_auth_level { @@ -26,7 +34,13 @@ sub get_auth_level { : $param{routing_type} eq 'controller' ? "SL::Controller::$param{controller}"->get_auth_level($param{action}) : 'user'; - return $auth_level eq 'user' ? 'user' : 'admin'; + return $valid_auth_levels{$auth_level} ? $auth_level : 'user'; +} + +sub get_keep_auth_vars { + my ($self, %param) = @_; + + return $param{routing_type} eq 'controller' ? "SL::Controller::$param{controller}"->keep_auth_vars_in_form(action => $param{action}) : 0; } 1;