Apache-SWIT-Security
view release on metacpan or search on metacpan
lib/Apache/SWIT/Security/Role/Container.pm view on Meta::CPAN
use strict;
use warnings FATAL => 'all';
package Apache::SWIT::Security::Role::Container::Item;
use base 'Class::Accessor';
__PACKAGE__->mk_accessors(qw(id name));
package Apache::SWIT::Security::Role::Container;
use Carp;
use Data::Dumper;
sub new {
my ($class, $roles) = @_;
my %roles;
while (my ($id, $v) = each %$roles) {
$roles{$id} = Apache::SWIT::Security::Role::Container::Item
->new({ id => $id, name => $v });
}
return bless { _roles => \%roles }, $class;
}
sub find_role_by_id {
my ($self, $role_id) = @_;
my $res = $self->{_roles}->{ $role_id }
or confess "Unable to find $role_id in " . Dumper($self);
return $res;
}
sub find_role_by_name {
my ($self, $name) = @_;
my ($res) = grep { $_->name eq $name } values %{ $self->{_roles} };
return $res;
}
sub roles_list {
my $self = shift;
my @res;
while (my ($n, $v) = each %{ $self->{_roles} }) {
push @res, [ $n, $v->name ];
}
return sort { $a->[0] <=> $b->[0] } @res;
}
1;
( run in 1.813 second using v1.01-cache-2.11-cpan-39bf76dae61 )