Mercurial > pub > Impl
comparison Lib/IMPL/Security.pm @ 66:f47f93534005
Documentation
author | wizard |
---|---|
date | Thu, 18 Mar 2010 17:58:33 +0300 |
parents | a1498298d3ee |
children | 2f31ecabe9ea |
comparison
equal
deleted
inserted
replaced
65:2840c4c85db8 | 66:f47f93534005 |
---|---|
14 $_->() or return 0 foreach @{$self->Rules}; | 14 $_->() or return 0 foreach @{$self->Rules}; |
15 | 15 |
16 return 1; | 16 return 1; |
17 } | 17 } |
18 | 18 |
19 sub Take { | |
20 my ($self,$principal,$refRoles) = @_; | |
21 | |
22 die new IMPL::NotImplementedException(); | |
23 } | |
24 | |
19 sub Rules { | 25 sub Rules { |
20 return \@rules; | 26 return \@rules; |
21 } | 27 } |
22 | 28 |
23 1; | 29 1; |
24 | 30 |
25 __END__ | 31 __END__ |
26 | 32 |
27 =pod | 33 =pod |
34 | |
35 =head1 NAME | |
36 | |
37 C<IMPL::Security> - Модуль для работы с функциями авторизации и аутентификации. | |
38 | |
39 =head1 SINOPSYS | |
40 | |
41 =begin code | |
42 | |
43 use IMPL::Security; | |
44 | |
45 my Method { | |
46 my $this = shift; | |
47 | |
48 # access check in the current context, using standard configuration | |
49 IMPL::Security->AccessCheck($this,'Method') or die new IMPL::AccessDeniedException("Access is denied"); | |
50 | |
51 #some more results | |
52 } | |
53 | |
54 my DelegationMethod { | |
55 | |
56 my $this = shift; | |
57 | |
58 #forced delegation | |
59 my $delegatedContext = IMPL::Security::Context->new( | |
60 Principal => IMPL::Security::Principal->new( | |
61 Name => 'suser' | |
62 ), | |
63 AssignedRoles => ['administrator'] | |
64 ) | |
65 | |
66 my $result; | |
67 | |
68 $delegatedContext->Impersonate(sub{ | |
69 $result = $this->Method(); | |
70 }); | |
71 | |
72 return $result; | |
73 } | |
74 | |
75 my SafeDelegationMethod { | |
76 | |
77 my $this = shift; | |
78 | |
79 my $delegatedContext = IMPL::Security->Take( suser => 'administrator' ); | |
80 | |
81 my $result; | |
82 | |
83 $delegatedContext->Impersonate(sub{ | |
84 $result = $this->Method(); | |
85 }); | |
86 | |
87 return $result; | |
88 } | |
89 | |
90 =end code | |
28 | 91 |
29 =head1 DESCRIPTION | 92 =head1 DESCRIPTION |
30 | 93 |
31 Модуль для инфраструктуры безопасности, реализует основные функции для авторизации | 94 Модуль для инфраструктуры безопасности, реализует основные функции для авторизации |
32 и аутентификации пользователей. | 95 и аутентификации пользователей. |
36 идентификатор пользователя и список активных ролей. | 99 идентификатор пользователя и список активных ролей. |
37 | 100 |
38 При проверке прав доступа происходит последовательная проверка правил доступа, | 101 При проверке прав доступа происходит последовательная проверка правил доступа, |
39 если все правила выполнены, то доступ разрешается. | 102 если все правила выполнены, то доступ разрешается. |
40 | 103 |
104 =head1 MEMBERS | |
41 | 105 |
106 =over | |
107 | |
108 =item C<AccessCheck($object,$desiredAccess,$context)> | |
109 | |
110 Метод. Проверка доступа к объекту с определенными правами, в определенном контексте безопасности. | |
111 | |
112 =over | |
113 | |
114 =item C<$object> | |
115 | |
116 Объект доступа. | |
117 | |
118 =item C<$desiredAccess> | |
119 | |
120 Требуемые права доступа. | |
121 | |
122 =item C<$context> | |
123 | |
124 Контекст безопасности, если не указан, то используется текущий C<< IMPL::Security::Context->contextCurrent >> | |
125 | |
126 =item C<returns> | |
127 | |
128 C<true | false> - результат проверки | |
129 | |
130 =back | |
131 | |
132 =item C<Take($principal,$role)> | |
133 | |
134 Метод. Делегирует текущему пользователю полномочия другого пользователя. При этом выполняется проверка | |
135 правомерности такой операции. В случае неудачи вызывается исключение. | |
136 | |
137 =over | |
138 | |
139 =item C<$principal> | |
140 | |
141 Либо имя пользователя либо объект C<IMPL::Security::Principal>. | |
142 | |
143 =item C<$role> | |
144 | |
145 Либо имя либо ссылка на роль, или ссылка на массив либо имен, либо ролей. | |
146 | |
147 =item C<returns> | |
148 | |
149 Новый контекст безопасности. | |
150 | |
151 =back | |
152 | |
153 =item C<Roles()> | |
154 | |
155 Возвращает список правил которые выполняются при проверках доступа. Пререопределите этот | |
156 метод, чтобы возвращать собственный список правил. Список правил является ссылкой на массив | |
157 элементами которого являются функции. | |
158 | |
159 =begin code | |
160 | |
161 package MySecurity; | |
162 | |
163 use base qw(IMPL::Security); | |
164 | |
165 sub Rules { | |
166 return [ | |
167 \&Rule1, | |
168 \&Rule2, | |
169 #... | |
170 ] | |
171 } | |
172 | |
173 =end code | |
174 | |
175 =back | |
42 | 176 |
43 =cut | 177 =cut |