diff Lib/IMPL/Security.pm @ 371:d5c8b955bf8d

refactoring
author cin
date Fri, 13 Dec 2013 16:49:47 +0400
parents 814d755e5d12
children
line wrap: on
line diff
--- a/Lib/IMPL/Security.pm	Tue Dec 10 03:02:01 2013 +0400
+++ b/Lib/IMPL/Security.pm	Fri Dec 13 16:49:47 2013 +0400
@@ -13,38 +13,6 @@
     Context => 'IMPL::Security::Context'
 };
 
-our @RULES;
-
-sub AccessCheck {
-    my ($self, $object, $desiredAccess, $context) = @_;
-    
-    $context ||= $self->context;
-    
-    $_->($self,$object,$desiredAccess,$context) or return 0 foreach @{$self->Rules};
-    
-    return 1;
-}
-
-sub Take {
-    my ($self,$principal,$refRoles) = @_;
-    
-    die new IMPL::NotImplementedException();
-}
-
-sub MakeContext {
-    my ($this,$principal,$refRoles,$auth) = @_;
-    
-    return Context->new(
-        principal => $principal,
-        rolesAssigned => $refRoles,
-        auth => $auth
-    );
-}
-
-sub Rules {
-    return \@RULES;
-}
-
 sub principal {
     return
         AbstractContext->current
@@ -58,175 +26,4 @@
 
 1;
 
-__END__
-
-=pod
-
-=head1 NAME
-
-C<IMPL::Security> - Модуль для работы с функциями авторизации и аутентификации.
-
-=head1 SINOPSYS
-
-=begin code
-
-use IMPL::Security;
-
-my Method {
-    my $this = shift;
-    
-    # access check in the current context, using standard configuration
-    IMPL::Security->AccessCheck($this,'Method') or die new IMPL::AccessDeniedException("Access is denied");
-    
-    #some more results 
-}
-
-my DelegationMethod {
-    
-    my $this = shift;
-    
-    #forced delegation 
-    my $delegatedContext = IMPL::Security::Context->new(
-        principal => IMPL::Security::Principal->new(
-            name => 'suser'
-        ),
-        rolesAssigned => ['administrator']
-    )
-    
-    my $result;
-    
-    $delegatedContext->Impersonate(sub{
-        $result = $this->Method();
-    });
-    
-    return $result;
-}
-
-my SafeDelegationMethod {
-    
-    my $this = shift;
-    
-    my $delegatedContext = IMPL::Security->Take( suser => 'administrator' );
-    
-    my $result;
-    
-    $delegatedContext->Impersonate(sub{
-        $result = $this->Method();
-    });
-    
-    return $result;
-}
-
-=end code
-
-=head1 DESCRIPTION
-
-Модуль для инфраструктуры безопасности, реализует основные функции для авторизации
-и аутентификации пользователей.
-
-Модуль аутентификации, реализиция которого зависит от приложения, аутентифицирует
-пользователя, при этом создается контекст безопасности, который содержит
-идентификатор пользователя и список активных ролей.
-
-При проверке прав доступа происходит последовательная проверка правил доступа,
-если все правила выполнены, то доступ разрешается.
-
-=head1 MEMBERS
-
-=over
-
-=item C<AccessCheck($object,$desiredAccess,$context)>
-
-Метод. Проверка доступа к объекту с определенными правами, в определенном контексте безопасности.
-
-=over
-
-=item C<$object>
-
-Объект доступа.
-
-=item C<$desiredAccess>
-
-Требуемые права доступа.
-
-=item C<$context>
-
-Контекст безопасности, если не указан, то используется текущий C<< IMPL::Security::Context->contextCurrent >>
-
-=item C<returns>
-
-C<true | false> - результат проверки
-
-=back
-
-=item C<MakeContext($principal,$role,$auth)>
-
-Создает контекст безопасности, инициализируя его передданными параметрами.
-
-=over
-
-=item C<$principal>
-
-Объект пользователя
-
-=item C<$role>
-
-Роль или ссылка на массив ролей
-
-=item C<$auth>
-
-Объект аутентификации
-
-=back
-
-=item C<Take($principal,$role)>
-
-Метод. Делегирует текущему пользователю полномочия другого пользователя. При этом выполняется проверка
-правомерности такой операции. В случае неудачи вызывается исключение.
-
-=over
-
-=item C<$principal>
-
-Либо имя пользователя либо объект C<IMPL::Security::Principal>.
-
-=item C<$role>
-
-Либо имя либо ссылка на роль, или ссылка на массив либо имен, либо ролей.
-
-=item C<returns>
-
-Новый контекст безопасности.
-
-=back
-
-=item C<Rules()>
-
-Возвращает список правил которые выполняются при проверках доступа. Пререопределите этот
-метод, чтобы возвращать собственный список правил. Список правил является ссылкой на массив
-элементами которого являются функции.
-
-=begin code
-
-package MySecurity;
-
-use parent qw(IMPL::Security);
-
-sub Rules {
-    return [
-        \&Rule1,
-        \&Rule2,
-        #...
-    ]
-}
-
-=end code
-
-=item C<[static,get] authority>
-
-Метод, позволяющий получить текущий источник системы безопасности. Источник безопасности, это модуль,
-который получает входные данные и использует их для работы системы безопасности.
-
-=back
-
-=cut
+__END__
\ No newline at end of file