comparison Lib/IMPL/Web/Security.pm @ 328:63709a4e6da0

Security framework refactoring
author cin
date Mon, 03 Jun 2013 03:28:01 +0400
parents 23daf2fae33a
children 2287c72f303a
comparison
equal deleted inserted replaced
327:6cb0d4d325d7 328:63709a4e6da0
4 use IMPL::Security::Auth qw(:Const); 4 use IMPL::Security::Auth qw(:Const);
5 use IMPL::declare { 5 use IMPL::declare {
6 require => { 6 require => {
7 Exception => 'IMPL::Exception', 7 Exception => 'IMPL::Exception',
8 NotImplementedException => '-IMPL::NotImplementedException', 8 NotImplementedException => '-IMPL::NotImplementedException',
9 ArgException => '-IMPL::InvalidArgumentException',
9 SecurityContext => 'IMPL::Security::AbstractContext' 10 SecurityContext => 'IMPL::Security::AbstractContext'
10 }, 11 },
11 }; 12 };
12 13
13 use constant { 14 use constant {
19 }; 20 };
20 21
21 sub AuthUser { 22 sub AuthUser {
22 my ($this,$name,$package,$challenge) = @_; 23 my ($this,$name,$package,$challenge) = @_;
23 24
24 my $user = $this->FindUserByName($name) 25 my $user = $this->users->GetById($name)
25 or return { 26 or return {
26 status => AUTH_FAIL, 27 status => AUTH_FAIL,
27 code => ERR_NO_SUCH_USER 28 code => ERR_NO_SUCH_USER
28 }; 29 };
29 30
67 68
68 my $session = SecurityContext->current; 69 my $session = SecurityContext->current;
69 if($session && $session->authority) { 70 if($session && $session->authority) {
70 $session->authority->CloseSession($session); 71 $session->authority->CloseSession($session);
71 72
72 $this->CloseSession($session); 73 $this->sessions->Delete($session);
73 } 74 }
74 } 75 }
75 76
76 sub FindUserByName { 77 sub CreateSecData {
77 die NotImplementedException->new(); 78 my ($this,$package,$params) = @_;
78 } 79
79 80 die ArgException->new(params => 'A hash reference is required')
80 sub CreateSession { 81 unless ref($params) eq 'HASH';
81 die NotImplementedException->new(); 82
82 } 83 return $package->CreateSecData(%$params);
83
84 sub GetSession {
85 die NotImplementedException->new();
86 }
87
88 sub SaveSession {
89 die NotImplementedException->new();
90 }
91
92 sub CloseSession {
93 die NotImplementedException->new();
94 } 84 }
95 85
96 1; 86 1;
97 87
98 __END__ 88 __END__
119 Предоставляет такие объкты безопасности, как пользователь, сессия роль, 109 Предоставляет такие объкты безопасности, как пользователь, сессия роль,
120 определяет правила проверки прав доступа субъекта к объекту. 110 определяет правила проверки прав доступа субъекта к объекту.
121 111
122 =item Модуль безопасности 112 =item Модуль безопасности
123 113
114 Контекст безопасности создается именно этим модулем.
115
124 Как правило встраивается в транспортный уровеь в виде обработчика 116 Как правило встраивается в транспортный уровеь в виде обработчика
125 C<IMPL::Web::Handler> и реализует непосредственно протокол аутентификации и 117 C<IMPL::Web::Handler> и реализует непосредственно протокол аутентификации и
126 обмена с пользователем. 118 обмена с пользователем.
127 119
128 Также модуль безопасности использует модель для хранения сессий и данных 120 Также модуль безопасности использует модель для хранения сессий и данных
129 аутентификции. Контекст безопасности создается именно этим модулем. 121 аутентификции.
130 122
131 =back 123 =back
132 124
133 =head1 MEMBERS 125 =head1 MEMBERS
134 126