X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDispatcher%2FAuthHandler%2FAdmin.pm;h=ad7c1f413511eead7ac8366b4652941ce6449b20;hb=a4c3e9de7b3169ac6a0ad270022da9aeed91f9ff;hp=2e41ee90e53d3a87b3d9bf7e915549fb1ab9a8c6;hpb=b6fd15a8dc44f9b09d5a2bce766cda14b87c6e13;p=kivitendo-erp.git diff --git a/SL/Dispatcher/AuthHandler/Admin.pm b/SL/Dispatcher/AuthHandler/Admin.pm index 2e41ee90e..ad7c1f413 100644 --- a/SL/Dispatcher/AuthHandler/Admin.pm +++ b/SL/Dispatcher/AuthHandler/Admin.pm @@ -6,16 +6,29 @@ use parent qw(Rose::Object); use SL::Layout::Dispatcher; sub handle { + my ($self, %params) = @_; + %::myconfig = (); - return if $::form->{'{AUTH}admin_password'} && ($::auth->authenticate_root($::form->{'{AUTH}admin_password'}) == $::auth->OK()); - return if !$::form->{'{AUTH}admin_password'} && ($::auth->authenticate_root($::auth->get_session_value('admin_password')) == $::auth->OK()); + my $ok = $::auth->get_api_token_cookie ? 1 : 0; + $ok ||= $::form->{'{AUTH}admin_password'} && ($::auth->authenticate_root($::form->{'{AUTH}admin_password'}) == $::auth->OK()); + $ok ||= !$::form->{'{AUTH}admin_password'} && ($::auth->authenticate_root($::auth->get_session_value('admin_password')) == $::auth->OK()); + $ok ||= $params{action} eq 'login'; - $::request->{layout} = SL::Layout::Dispatcher->new(style => 'admin'); + $::auth->create_or_refresh_session; - $::auth->punish_wrong_login; + if ($ok) { + $::auth->delete_session_value('FLASH'); + return 1; + } + + $::request->{layout} = SL::Layout::Dispatcher->new(style => 'admin'); + $::request->layout->no_menu(1); $::auth->delete_session_value('admin_password'); + $::auth->punish_wrong_login; SL::Dispatcher::show_error('admin/adminlogin', 'password'); + + return 0; } 1;