view Lib/IMPL/Web/Security.pm @ 79:2d1c3f713280

ORM concept in development
author wizard
date Mon, 05 Apr 2010 00:20:34 +0400
parents 2f31ecabe9ea
children 077357224bec
line wrap: on
line source

package IMPL::Web::Security;

use base qw(IMPL::Object IMPL::Security IMPL::Object::Autofill);

use IMPL::Class::Property;

__PACKAGE__->PassThroughArgs;

BEGIN {
	public property source => prop_all;
}

sub CTOR {
	my ($this) = @_;
	
	$this->dataSource or die new IMPL::InvalidArgumentException("The argument is required",'dataSource');
}

sub RetrSession {
	my ($this,$sid) = @_;
	
	return $this->source->RetrSession(id => $sid);
}

sub RetrSecData {
	my ($this,$user,$secPackage) = @_;
	
	$user = ref $user ? $user->name : $user;
	
	return
		$this->source->RetrSecData(user => $user, package => $secPackage);
}

1;

__END__

=pod

=head1 NAME

C<IMPL::Web::Security> Модуль для аутентификации и авторизации веб запроса.

=head1 SINOPSYS

=begin code xml

<security type='IMPL::Config::Activator'>
	<factory>IMPL::Web::Security</factory>
	<parameters type='HASH'>
		<sessionFactory type='IMPL::Object::Factory'>
			<factory type='IMPL::Object::Factory'>App::Data::Session</factory>
			<method>insert</method>
		</sessionFactory>
	</parameters>
</security>

=end code xml

=head1 DESCRIPTION

Отвечает за инфраструктуру аутентификации и авторизации запросов. Основная особенность
заключается в том, что запросы приходят через значительные интевалы времени, хотя и
относятся к одной логической транзакции. В промежутках между запросами сервер не
сохраняет свое состояние. Поэтому при каждом обращении сервер восстанавливает
контекст безопасности.

C<IMPL::Web::Session> Объект обеспечивающий сохранение состояния в рамках одной сессии
пользователя. Кроме контекста безопасности хранит дополнительние данные, которые необходимо
сохранить между обработкой запросов.

C<IMPL::Web::User> Объект, устанавливающий связь между идентификатором пользователя
C<IMPL::Security::Principal>, его ролями и данными безопасности для создания объектов
аутентификации C<IMPL::Security::Auth>.

=head1 MEMBERS

=cut