Mercurial > pub > Impl
view Lib/IMPL/Security/Role.pm @ 84:e568c7c8b743
Minor changes to the test infrastructure
author | wizard |
---|---|
date | Wed, 14 Apr 2010 17:38:11 +0400 |
parents | 2f31ecabe9ea |
children | 79bf75223afe |
line wrap: on
line source
package IMPL::Security::Role; use base qw(IMPL::Object); use IMPL::Class::Property; BEGIN { public property roleName => prop_get | owner_set; public property parentRoles => prop_get | owner_set | prop_list; } sub CTOR { my ($this,$name,$parentRoles) = @_; $this->roleName($name); $this->parentRoles($parentRoles); } sub Satisfy { my ($this,@roles) = @_; return 1 unless $this->_FilterRoles( @roles ); } sub _FilterRoles { my ($this,@roles) = @_; @roles = grep not (ref $_ ? $this == $_ : $this->roleName eq $_), @roles; @roles = $_->_FilterRoles(@roles) or return foreach @{$this->parentRoles} ; return @roles; } 1; __END__ =pod =head1 NAME C<IMPL::Security::Role> Роль =head1 DESCRIPTION Может включать в себя базовые роли. Имеется метод для проверки наличия необходимых ролей в текущей роли. =head1 MEMBERS =over =item C<[get] roleName> Имя роли, ее идентификатор =item C<[get,list] parentRoles> Список родительских ролей =item C<Satisfy(@roles_list)> Проверяет наличие ролей указанных ролей из списка @roles_list. Допускается использование как самих объектов, так и имен ролей. Возвращает 0 в случае неудачи, 1 при наличии необходимых ролей =back =cut