What you want are roles via the Catalyst::Plugin::Authorization::Roles
. This allows you to easily separate your different user types. Here is an example from the Catalyst::Plugin::Authentication
documentation:
use Catalyst qw/
...
Authorization::Roles
/;
sub edit : Local {
my ( $self, $c ) = @_;
$c->detach("unauthorized") unless $c->check_user_roles("edit");
# do something restricted here
}