Mercurial > pub > Impl
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 |