Mercurial > pub > Impl
diff lib/IMPL/Security/Role.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/IMPL/Security/Role.pm Fri Sep 04 19:40:23 2015 +0300 @@ -0,0 +1,60 @@ +package IMPL::Security::Role; +use strict; + +use IMPL::require { + AbstractRole => 'IMPL::Security::AbstractRole' +}; + +use IMPL::declare { + base => [ + 'IMPL::Object' => undef, + 'IMPL::Security::AbstractRole' => undef + ], + _implement => 1 +}; + +sub CTOR { + my ($this,$name,$parentRoles) = @_; + + $this->roleName($name) if $name; + $this->parentRoles($parentRoles) if $parentRoles; +} + +1; + +__END__ + +=pod + +=head1 NAME + +C<IMPL::Security::Role> - стандартная реализация роли безопасности. + +=head1 SYNOPSIS + +=begin code + +# create the megarole +my $role = IMPL::Security::Role->new(megarole => [ $adminRole, $directorRole ] ); + +#use it in context +my $context = IMPL::Security::Context->new( + principal => $user, + assignedRoles => [$user->roles, $megarole] +); + +$context->Impersonate( sub { + # do something forbidden +}); + +=end code + +=head1 DESCRIPTION + +Позволяет создавать объекты ролей без привязки к источникам данных и модулям +авторизации. Чаще всего используется при реализации каких либо механизмов +безопасности, где требуется создать временную роль. + +C<IMPL::Security::AbstractRole> + +=cut \ No newline at end of file