diff Lib/IMPL/Security/Context.pm @ 74:84aa8c395fce

doc minor fixes
author wizard
date Mon, 29 Mar 2010 17:40:06 +0400
parents 739f1288ca84
children 077357224bec
line wrap: on
line diff
--- a/Lib/IMPL/Security/Context.pm	Mon Mar 29 06:56:05 2010 +0400
+++ b/Lib/IMPL/Security/Context.pm	Mon Mar 29 17:40:06 2010 +0400
@@ -2,7 +2,9 @@
 use strict;
 use warnings;
 
-use base qw(IMPL::Object);
+use base qw(IMPL::Object IMPL::Object::Autofill);
+
+__PACKAGE__->PassThroughArgs;
 
 use IMPL::Class::Property;
 
@@ -17,6 +19,12 @@
     public property auth => prop_all;
 }
 
+sub CTOR {
+	my ($this) = @_;
+	
+	die new IMPL::InvalidArgumentException("The parameter is required", 'principal') unless $this->principal;
+}
+
 sub Impersonate {
     my ($this,$code) = @_;
     
@@ -34,13 +42,13 @@
     }
 }
 
-sub contextNobody {
+sub nobody {
     my ($self) = @_;
     $nobody = $self->new(principal => IMPL::Security::Principal->nobody, rolesAssigned => undef) unless $nobody;
     $nobody;
 }
 
-sub contextCurrent {
+sub current {
 	my ($self) = @_;
 	
 	$current = __PACKAGE__->nobody unless $current;
@@ -48,3 +56,69 @@
 }
 
 1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+C<IMPL::Security::Context> - контекст безопасности.
+
+=head1 SINOPSYS
+
+=begin code
+
+my $context = IMPL::Security::Context->nobody;
+
+my $result = $context->Impersonate(
+	sub {
+		# do some untrusted code
+	}
+);
+
+=end code
+
+=head1 DESCRIPTION
+
+C<[Autofill]>
+
+Являет собой контекст безопасности, описывает пользователя и привелегии, так же
+у потока есть текущий контекст безопасности, по умолчанию он C<nobody>.
+
+=head1 MEMBERS
+
+=over
+
+=item C<CTOR(%props)>
+
+Создает объект и заполняет его свойствами.
+
+=item C<[get] principal>
+
+Идентификатор пользователя, владельца контекста.
+
+=item C<[get] rolesAssigned>
+
+Список назначенных (активных) ролей пользователю.
+
+=item C<[get] auth>
+
+Объект асторизации C<IMPL::Security::Auth>, использованный при создании текущего контекста.
+
+=item C<Impersonate($code)>
+
+Делает контекст текущим и выполняет в нем функцию по ссылке C<$code>. По окончании
+выполнения, контекст восстанавливается.
+
+=item C<[static,get] nobody>
+
+Контекст для неаутентифицированных пользователей, минимум прав.
+
+=item C<[static,get] current>
+
+Текущий контекст.
+
+=back
+
+=cut
\ No newline at end of file