Mercurial > pub > Impl
diff 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 |
line wrap: on
line diff
--- a/Lib/IMPL/Web/Security.pm Thu May 30 20:31:37 2013 +0400 +++ b/Lib/IMPL/Web/Security.pm Mon Jun 03 03:28:01 2013 +0400 @@ -6,6 +6,7 @@ require => { Exception => 'IMPL::Exception', NotImplementedException => '-IMPL::NotImplementedException', + ArgException => '-IMPL::InvalidArgumentException', SecurityContext => 'IMPL::Security::AbstractContext' }, }; @@ -21,7 +22,7 @@ sub AuthUser { my ($this,$name,$package,$challenge) = @_; - my $user = $this->FindUserByName($name) + my $user = $this->users->GetById($name) or return { status => AUTH_FAIL, code => ERR_NO_SUCH_USER @@ -69,28 +70,17 @@ if($session && $session->authority) { $session->authority->CloseSession($session); - $this->CloseSession($session); + $this->sessions->Delete($session); } } -sub FindUserByName { - die NotImplementedException->new(); -} - -sub CreateSession { - die NotImplementedException->new(); -} - -sub GetSession { - die NotImplementedException->new(); -} - -sub SaveSession { - die NotImplementedException->new(); -} - -sub CloseSession { - die NotImplementedException->new(); +sub CreateSecData { + my ($this,$package,$params) = @_; + + die ArgException->new(params => 'A hash reference is required') + unless ref($params) eq 'HASH'; + + return $package->CreateSecData(%$params); } 1; @@ -121,12 +111,14 @@ =item Модуль безопасности +Контекст безопасности создается именно этим модулем. + Как правило встраивается в транспортный уровеь в виде обработчика C<IMPL::Web::Handler> и реализует непосредственно протокол аутентификации и обмена с пользователем. Также модуль безопасности использует модель для хранения сессий и данных -аутентификции. Контекст безопасности создается именно этим модулем. +аутентификции. =back