Mercurial > pub > Impl
diff Lib/IMPL/Web/Security.pm @ 233:3cebcf6fdb9b
refactoring, cleaning code
author | sergey |
---|---|
date | Thu, 11 Oct 2012 04:53:08 +0400 |
parents | 5c82eec23bb6 |
children | 23daf2fae33a |
line wrap: on
line diff
--- a/Lib/IMPL/Web/Security.pm Tue Oct 09 20:12:47 2012 +0400 +++ b/Lib/IMPL/Web/Security.pm Thu Oct 11 04:53:08 2012 +0400 @@ -10,11 +10,20 @@ }, }; +use constant { + ERR_NO_SUCH_USER => -1, + ERR_NO_SEC_DATA => -2, + ERR_AUTH_FAIL => -3 +}; + sub AuthUser { my ($this,$name,$package,$challenge) = @_; my $user = $this->FindUserByName($name) - or return { status => AUTH_FAIL, answer => "Can't find a user '$name'" }; + or return { + status => AUTH_FAIL, + code => ERR_NO_SUCH_USER + }; my $auth; if ( my $secData = $user->GetSecData($package) ) { @@ -22,6 +31,7 @@ } else { return { status => AUTH_FAIL, + code => ERR_NO_SEC_DATA, user => $user }; } @@ -34,6 +44,7 @@ return { status => $status, + code => ($status == AUTH_FAIL ? ERR_AUTH_FAIL : 0), user => $user }; } @@ -93,4 +104,54 @@ =head1 MEMBERS +=head2 C<AuthUser($name,$package,$challenge)> + +Инициирует создание новой сессии используя провайдера безопасности текущего +контекста безопасности. + +=over + +=item C<$name> + +Имя пользователя, которое будет использоваться при поиске его в БД. + +=item C<$package> + +Имя модуля аутентификации, например, C<IMPL::Security::Auth::Simple>. + +=item C<$challenge> + +Данные, полученные от клиента, которые будут переданы модулю аутентификации для +начала процесса аутентификации и создания сессии. + +=back + +Функция возвращает хеш с элементами + +=over + +=item C<status> + +Статус аутентификации - отражает общее состояние процесса ацтентификации, + +=over + +=item C<AUTH_FAIL> + +Аутентификация неудачная, сессия не создана. + +=item C<AUTH_INCOMPLETE> + +Аутентификация требует дополнительных шагов, сессия создана, но еще не доверена. + +=item C<AUTH_SUCCESS> + +Аутентификация успешно проведена, сессия создана. + +=back + +=item C<code> + +=back + =cut