package TestApp::Controller::Root; use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller::ActionRole' }; __PACKAGE__->config(namespace => q{}); sub index :Path Args(0) { my ($self, $c) = @_; $c->res->body('action: index'); } sub edit :Local :Does('ACL') :RequiresRole(editor) :ACLDetachTo(denied) { my ($self, $c) = @_; $c->res->body("action: edit"); } sub killit :Local :Does('ACL') :RequiresRole(killer) :ACLDetachTo(denied) { my ($self, $c) = @_; $c->res->body("action: killit"); } sub crews :Local :Does('ACL') :RequiresRole(editor) :RequiresRole(banana) :ACLDetachTo(denied) { my ($self, $c) = @_; $c->res->body("action: crews"); } sub reese :Local :Does('ACL') :AllowedRole(sarah) :AllowedRole(shahi) :ACLDetachTo(denied) { my ($self, $c) = @_; $c->res->body("action: reese"); } sub wolverines :Local :Does('ACL') :RequiresRole('swayze') :AllowedRole('actor') :AllowedRole('guerilla') :ACLDetachTo(denied) { my ($self, $c) = @_; $c->res->body("action: wolverines"); } sub denied :Private { my ($self, $c) = @_; $c->res->status(403); $c->res->body('access denied'); } __PACKAGE__->meta->make_immutable;