Authorization-AccessControl
view release on metacpan or search on metacpan
lib/Authorization/AccessControl/Grant.pm view on Meta::CPAN
package Authorization::AccessControl::Grant 0.04;
use v5.26;
use warnings;
# ABSTRACT: Encapsulation of the parameters of a privilege grant
use Data::Compare;
use Readonly;
use Scalar::Util qw(looks_like_number);
use experimental qw(signatures);
use overload
'""' => 'to_string';
sub new($class, %params) {
my $role = delete($params{role});
my $resource = delete($params{resource});
my $action = delete($params{action});
lib/Authorization/AccessControl/Grant.pm view on Meta::CPAN
bless($data, $class);
}
sub to_string($self, @params) {
my $role = $self->{_role} ? '[' . $self->{_role} . '] ' : '';
my $restrictions = '';
foreach (keys($self->{_restrictions}->%*)) {
my $v;
if ($self->{_restrictions}->{$_}) {$v = $self->{_restrictions}->{$_}}
elsif (looks_like_number($self->{_restrictions}->{$_})) {$v = 0}
else {$v = 'false'}
$restrictions .= "$_=$v,";
}
chop($restrictions);
$role . $self->{_resource} . ' => ' . $self->{_action} . '(' . $restrictions . ')';
}
sub role($self) {
$self->{_role};
}
lib/Authorization/AccessControl/Request.pm view on Meta::CPAN
package Authorization::AccessControl::Request 0.04;
use v5.26;
use warnings;
# ABSTRACT: Constructs an ACL request and checks if it is accepted
use Authorization::AccessControl::Dispatch;
use Readonly;
use Scalar::Util qw(looks_like_number);
use constant true => !0;
use constant false => !1;
use experimental qw(signatures);
use overload
'""' => \&to_string;
sub new($class, %params) {
lib/Authorization/AccessControl/Request.pm view on Meta::CPAN
}
sub to_string($self, @params) {
my $roles = ($self->{_roles} // [])->@* ? '[' . join(',', ($self->{_roles} // [])->@*) . ']' : '';
my $attributes = '';
my $resource = $self->{_resource} // '{NO_RESOURCE}';
my $action = $self->{_action} // '{NO_ACTION}';
foreach (keys($self->{_attributes}->%*)) {
my $v;
if ($self->{_attributes}->{$_}) {$v = $self->{_attributes}->{$_}}
elsif (looks_like_number($self->{_attributes}->{$_})) {$v = 0}
else {$v = 'false'}
$attributes .= "$_=$v,";
}
chop($attributes);
$roles . $resource . ' => ' . $action . '(' . $attributes . ')';
}
sub __properties($self) {
(
acl => $self->{_acl},
( run in 0.638 second using v1.01-cache-2.11-cpan-607d282f910 )