comparison lib/IMPL/Security/Context.pm @ 407:c6e90e02dd17 ref20150831

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
comparison
equal deleted inserted replaced
406:f23fcb19d3c1 407:c6e90e02dd17
1 package IMPL::Security::Context;
2 use strict;
3 use warnings;
4
5 use IMPL::require {
6 AbstractContext => 'IMPL::Security::AbstractContext',
7 };
8
9 use IMPL::declare {
10 require => {
11 Principal => 'IMPL::Security::Principal',
12 Role => 'IMPL::Security::Role',
13 Exception => 'IMPL::Exception',
14 ArgumentException => '-IMPL::InvalidArgumentException'
15 },
16 base => [
17 'IMPL::Object' => undef,
18 'IMPL::Object::Autofill' => '@_',
19 'IMPL::Security::AbstractContext' => undef,
20 ],
21 props => [
22 @{AbstractContext->abstractProps()}
23 ]
24 };
25
26 __PACKAGE__->abstractProps([]);
27
28
29 my $nobody;
30
31 sub CTOR {
32 my ($this) = @_;
33
34 die ArgumentException->new("The parameter is required", 'principal') unless $this->principal;
35 }
36
37 sub nobody {
38 my ($self) = @_;
39 $nobody = $self->new(principal => Principal->nobody) unless $nobody;
40 $nobody;
41 }
42
43 sub isTrusted {
44 return 1;
45 }
46
47 1;
48
49 __END__
50
51 =pod
52
53 =head1 NAME
54
55 C<IMPL::Security::Context> - реализация контекста безопасности создаваемого в
56 приложении.
57
58 =head1 SYNOPSIS
59
60 =begin code
61
62 my $context = IMPL::Security::Context->nobody;
63
64 my $result = $context->Impersonate(
65 sub {
66 # do some untrusted code
67 }
68 );
69
70 $context = IMPL::Security::Context->new(
71 principal => $user,
72 assignedRoles => [
73 $backupRole,
74 $controlRole
75 ]
76 );
77
78 $context->Impersonate(
79 sub {
80
81 # do some authorized operations
82
83 $service->backupData('current.bak');
84 $service->stop();
85 }
86 );
87
88 =end code
89
90 =head1 DESCRIPTION
91
92 C<autofill>
93
94 Данная реализация контекста безопасности не привязана ни к источнику данных
95 ни к пакету аутентификации и авторизации, ее приложение может создать в любой
96 момент, при этом система сама несет ответственность за последствия.
97
98 Данный контекст нужен для выполнения системой служебных функций.
99
100 =head1 MEMBERS
101
102 см. также C<IMPL::Security::AbstractContext>.
103
104 =head2 C<CTOR(%props)>
105
106 Создает объект и заполняет его свойствами. C<principal> должен быть обязательно
107 указан.
108
109 =head2 C<[static,get] nobody>
110
111 Контекст для неаутентифицированных пользователей, минимум прав.
112
113 =cut