|
|
| |
Tree::Authz::Role(3) |
User Contributed Perl Documentation |
Tree::Authz::Role(3) |
- new( $role, $authz_class )
- Represents a role.
- name()
- Returns the name of this role.
- group_name()
- DEPRECATED.
Use "name" instead.
- authz
- Returns the Tree::Authz subclass used to instantiate this role.
- list_roles
- Returns a list of roles inherited by this role, including this role.
- setup_permissions( $cando )
- Instance method.
Adds methods to the class representing the role.
$cando is a single method name, or arrayref of
method names. No-op methods are added to the class representing the
group:
my $spies = $authz->role( 'spies' );
my $cando = [ qw( read_secret wear_disguise ) ];
$spies->setup_permissions( $cando );
if ( $spies->can( 'read_secret' ) ) {
warn 'Compromised!';
}
warn 'Trust no-one' if $spies->can( 'wear_disguise' );
- setup_abilities( $name => $coderef, [ $name2 => $coderef2 ], ...
)
- Instance method.
Adds methods to the class representing the group. Keys give
method names and values are coderefs that will be installed as methods
on the group class:
my $spies = $authz->get_group( 'spies' );
my %able = ( read_secret => sub {
my ($self, $file) = @_;
open( SECRET, $file );
local $/;
<SECRET>;
},
find_moles => sub { ... },
);
$spies->setup_abilities( %able );
if ( $spies->can( 'read_secret' ) ) {
print $spies->read_secret( '/path/to/secret/file' );
}
# or
if ( my $read = $spies->can( 'read_secret' ) ) {
print $spies->$read( '/path/to/secret/file' );
}
# with an unknown $group
my $get_secret = $group->can( 'read_secret' ) || # spy
$group->can( 'steal_document' ) || # mole
$group->can( 'create_secret' ) || # spymaster
$group->can( 'do_illicit_thing' ) || # politician
sub {}; # boring life
my $secret = $group->$get_secret;
- setup_plugins( $plugins )
- Instance method.
Instead of adding a set of coderefs to a group's class, this
method adds a class to the @ISA array of the
group's class.
package My::Spies;
sub wear_disguise {}
sub read_secret {
my ($self, $file) = @_;
open( SECRET, $file );
local $/;
<SECRET>;
}
package main;
my $spies = $authz->get_group( 'spies' );
$spies->setup_plugins( 'My::Spies' );
if ( $spies->can( 'read_secret' ) ) {
warn 'Compromised!';
print $spies->read_secret( '/path/to/secret/file' );
}
warn 'Trust no-one' if $spies->can( 'wear_disguise' );
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |