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