Dispatcher: Auch Controller ermöglichen, die Admin-Login benötigen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 17 Aug 2012 10:24:58 +0000 (12:24 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 17 Aug 2012 10:24:58 +0000 (12:24 +0200)
commit6afd06adfeb66b481b7240637351a34a41e702d1
tree4e8e24768b3a3ce565e96013c68cfbc2cb10f5e0
parentdcaf9754bac8b40319cbb62b6577fb2d2569aac7
Dispatcher: Auch Controller ermöglichen, die Admin-Login benötigen

Default ist für Controller, dass all ihre Funktionen User-Logins
benötigen. Kann ein Controller ändern, indem er die Sub
"get_auth_level" überschreibt (siehe Doku in
SL::Contrller::Base). Dies schafft die Basis dafür, auch Admin-Dinge
in der neuen Controller-Architektur zu implementieren.

Für die Zukunft kann man leicht ein weiteres Level neben 'user' und
'admin' einbauen, z.B. 'none' für Actions, die definitiv kein Login
benötigen.

Funktionierendes Beispiel für einen solchen Controller (Aufruf dann
über URL ".../controller.pl?action=AdminTest/proof_of_concept"):

package SL::Controller::AdminTest;

use strict;

use parent qw(SL::Controller::Base);

use Rose::Object::MakeMethods::Generic
(
 scalar => [ qw(business) ],
);

#
# actions
#

sub action_proof_of_concept {
  my ($self) = @_;

  $::form->header;
  print $self->render(<<EOHTML, { inline => 1 });
 <body>
  <p>I've been called with an ADMIN login only!</p>
 </body>
</html>
EOHTML
}

#
# overrides
#

sub get_auth_level {
  return 'admin';
}

1;
SL/Controller/Base.pm
SL/Dispatcher.pm
SL/Dispatcher/AuthHandler.pm [new file with mode: 0644]
SL/Dispatcher/AuthHandler/Admin.pm [new file with mode: 0644]
SL/Dispatcher/AuthHandler/User.pm [new file with mode: 0644]
templates/webpages/login/password_error.html