changeset 260:2879cdb6b8cd

sync
author sergey
date Tue, 25 Dec 2012 02:18:59 +0400
parents b92f19630d33
children 93963ec449c5
files Lib/IMPL/Security/AbstractContext.pm Lib/IMPL/Web/View/TemplateView.pm Lib/IMPL/Web/ViewResult.pm
diffstat 3 files changed, 21 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/Lib/IMPL/Security/AbstractContext.pm	Fri Dec 21 00:09:11 2012 +0400
+++ b/Lib/IMPL/Security/AbstractContext.pm	Tue Dec 25 02:18:59 2012 +0400
@@ -3,8 +3,11 @@
 use warnings;
 
 use IMPL::Const qw(:prop);
+
 use IMPL::require {
-    Role => 'IMPL::Security::Role'
+    Role => 'IMPL::Security::Role',
+    Exception => 'IMPL::Exception',
+    NotImplementedException => '-IMPL::NotImplementedException'
 };
 
 use parent qw(IMPL::Class::Meta);
@@ -118,9 +121,10 @@
 
 Идентификатор пользователя, владельца контекста.
 
-=head2 C<[get] rolesAssigned>
+=head2 C<[get,set] rolesAssigned>
 
-Список назначенных (активных) ролей пользователю.
+Явно назначенные роли. Если список пуст, то считается, что используются роли
+пользователя по-умолчанию.
 
 =head2 C<[get] auth>
 
@@ -149,4 +153,10 @@
 Заменяет текущий контекст на себя, но до конца действия метода C<Impersonate>, если
 таковой был вызван.
 
+=head2 C<Satisfy(@roles)>
+
+Проверяет наличие необходимых ролей у контекста. Данный метод позволяет
+абстрагироваться от механизмов связи контекста и ролей. Возвращает истинное
+значение если список необходимых ролей у пользователя имеется.
+
 =cut
--- a/Lib/IMPL/Web/View/TemplateView.pm	Fri Dec 21 00:09:11 2012 +0400
+++ b/Lib/IMPL/Web/View/TemplateView.pm	Tue Dec 25 02:18:59 2012 +0400
@@ -8,7 +8,6 @@
     ],
     props => [
         template => PROP_RW,
-        defaultTemplate => PROP_RW
     ]
 };
 
--- a/Lib/IMPL/Web/ViewResult.pm	Fri Dec 21 00:09:11 2012 +0400
+++ b/Lib/IMPL/Web/ViewResult.pm	Tue Dec 25 02:18:59 2012 +0400
@@ -2,6 +2,7 @@
 use strict;
 
 use IMPL::Const qw(:prop);
+use Carp qw(carp);
 
 use IMPL::declare {
     base => [
@@ -10,13 +11,18 @@
     ],
     props => [
         model => PROP_RW,
-        location => PROP_RW,
+        _location => PROP_RW,
         cookies => PROP_RW,
         headers => PROP_RW,
         status  => PROP_RW
     ]
 };
 
+sub location {
+    carp "location property is absolute";
+    return shift->_location(@_);
+}
+
 1;
 
 __END__
@@ -35,8 +41,7 @@
     my ($this, $action) = @_;
     
     return IMPL::Web::ViewResult->new(
-        model => $model,
-        location => $this->location
+        model => $model
     );
 }
 
@@ -52,10 +57,6 @@
 
 Модель ресурса, как правило это результат выполнения C<Http> метода.
 
-=head2 C<[get,set]location>
-
-Текущий абсолютный адрес ресурса.
-
 =head2 C<[get,set]cookies>
 
 Хеш с печеньками, которые будут добавлены в C<HTTP> ответ.