51
|
1 package IMPL::Security::Role;
|
230
|
2 use strict;
|
51
|
3
|
230
|
4 use IMPL::require {
|
|
5 AbstractRole => 'IMPL::Security::AbstractRole'
|
|
6 };
|
51
|
7
|
230
|
8 use IMPL::declare {
|
|
9 base => [
|
|
10 'IMPL::Object' => undef,
|
|
11 'IMPL::Security::AbstractRole' => undef
|
|
12 ],
|
|
13 props => [
|
|
14 @{AbstractRole->abstractProps()}
|
|
15 ]
|
|
16 };
|
51
|
17
|
230
|
18 __PACKAGE__->abstractProps([]);
|
|
19
|
51
|
20
|
|
21 sub CTOR {
|
194
|
22 my ($this,$name,$parentRoles) = @_;
|
|
23
|
|
24 $this->roleName($name) if $name;
|
|
25 $this->parentRoles($parentRoles) if $parentRoles;
|
51
|
26 }
|
|
27
|
|
28 1;
|
|
29
|
|
30 __END__
|
|
31
|
|
32 =pod
|
|
33
|
73
|
34 =head1 NAME
|
|
35
|
230
|
36 C<IMPL::Security::Role> - стандартная реализация роли безопасности.
|
|
37
|
|
38 =head1 SYNOPSIS
|
|
39
|
|
40 =begin code
|
|
41
|
|
42 # create the megarole
|
|
43 my $role = IMPL::Security::Role->new(megarole => [ $adminRole, $directorRole ] );
|
|
44
|
|
45 #use it in context
|
|
46 my $context = IMPL::Security::Context->new(
|
|
47 principal => $user,
|
|
48 assignedRoles => [$user->roles, $megarole]
|
|
49 );
|
|
50
|
|
51 $context->Impersonate( sub {
|
|
52 # do something forbidden
|
|
53 });
|
|
54
|
|
55 =end code
|
73
|
56
|
51
|
57 =head1 DESCRIPTION
|
|
58
|
230
|
59 Позволяет создавать объекты ролей без привязки к источникам данных и модулям
|
|
60 авторизации. Чаще всего используется при реализации каких либо механизмов
|
|
61 безопасности, где требуется создать временную роль.
|
51
|
62
|
230
|
63 C<IMPL::Security::AbstractRole>
|
51
|
64
|
230
|
65 =cut |