Dancer-Plugin-Authorize
view release on metacpan or search on metacpan
lib/Dancer/Plugin/Authorize/Permissions/Config.pm view on Meta::CPAN
# ABSTRACT: Dancer::Plugin::Authorize access control via the Dancer configuration file!
package Dancer::Plugin::Authorize::Permissions::Config;
BEGIN {
$Dancer::Plugin::Authorize::Permissions::Config::VERSION = '1.110720';
}
use strict;
use warnings;
use base qw/Dancer::Plugin::Authorize::Permissions/;
sub subject_asa {
my ($self, $options, @arguments) = @_;
my $role = shift @arguments;
my $user = $self->credentials;
my $settings = $class::settings;
if ($role) {
if (grep { /$role/ } @{$user->{roles}}) {
return 1;
}
}
return 0;
}
sub subject_can {
my ($self, $options, @arguments) = @_;
my ($operation, $action) = @arguments;
my $settings = $class::settings;
my $user = $self->credentials;
my $roles = $options->{control};
foreach my $role ( @{$user->{roles}} ) {
if (defined $roles->{$role}->{permissions}) {
my $permissions = $roles->{$role}->{permissions};
if (defined $permissions->{$operation}) {
if ($action) {
if (defined $permissions->{$operation}->{operations}) {
my $operations = $permissions->{$operation}->{operations};
if (grep { /$action/ } @{$operations}) {
return 1;
}
}
}
else {
return 1;
}
}
}
}
return 0;
}
1;
__END__
=pod
=head1 NAME
Dancer::Plugin::Authorize::Permissions::Config - Dancer::Plugin::Authorize access control via the Dancer configuration file!
=head1 VERSION
version 1.110720
=head1 SYNOPSIS
plugins:
Authorize:
permissions:
class: Config
options:
control:
admin:
permissions:
manage accounts:
operations:
( run in 0.725 second using v1.01-cache-2.11-cpan-39bf76dae61 )