Mercurial > pub > Impl
changeset 172:068acfe903c3
corrected schema resolution mechanism
author | sourcer |
---|---|
date | Mon, 20 Jun 2011 23:42:44 +0400 |
parents | 59e5fcb59d86 |
children | aaab45153411 |
files | Lib/IMPL/Security.pm Lib/IMPL/Security/Role.pm Lib/IMPL/Web/Application/ControllerUnit.pm |
diffstat | 3 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/Lib/IMPL/Security.pm Mon Jun 06 03:30:36 2011 +0400 +++ b/Lib/IMPL/Security.pm Mon Jun 20 23:42:44 2011 +0400 @@ -11,7 +11,7 @@ sub AccessCheck { my ($self, $object, $desiredAccess, $context) = @_; - $context = IMPL::Security::Context->contextCurrent; + $context ||= IMPL::Security::Context->contextCurrent; $_->() or return 0 foreach @{$self->Rules};
--- a/Lib/IMPL/Security/Role.pm Mon Jun 06 03:30:36 2011 +0400 +++ b/Lib/IMPL/Security/Role.pm Mon Jun 20 23:42:44 2011 +0400 @@ -65,7 +65,7 @@ Проверяет наличие ролей указанных ролей из списка @roles_list. Допускается использование как самих объектов, так и имен ролей. -Возвращает 0 в случае неудачи, 1 при наличии необходимых ролей +Возвращает 0 в случае неудачи (хотябы одна роль не была удовлетворена), 1 при наличии необходимых ролей. =back
--- a/Lib/IMPL/Web/Application/ControllerUnit.pm Mon Jun 06 03:30:36 2011 +0400 +++ b/Lib/IMPL/Web/Application/ControllerUnit.pm Mon Jun 20 23:42:44 2011 +0400 @@ -57,6 +57,7 @@ } $info->{wrapper} = 'TransactionWrapper'; + $info->{method} ||= $method; $self->class_data(CONTROLLER_METHODS)->{$method} = $info; } } @@ -69,10 +70,12 @@ if ( not ref $info ) { $self->class_data(CONTROLLER_METHODS)->{$method} = { wrapper => 'FormWrapper', - schema => $info + schema => $info, + method => $method }; } elsif (ref $info eq 'HASH') { $info->{wrapper} = 'FormWrapper'; + $info->{method} ||= $method; $self->class_data(CONTROLLER_METHODS)->{$method} = $info; } else { @@ -129,7 +132,8 @@ my ($self,$method,$action,$methodInfo) = @_; my $unit = $self->new($action); - return $unit->$method($unit->MakeParams($methodInfo)); + my $handler = $methodInfo->{method}; + return $unit->$handler($unit->MakeParams($methodInfo)); } sub FormWrapper { @@ -150,6 +154,8 @@ $form ); + my $handler = $methodInfo->{method}; + $result{formName} = $form; $result{formSchema} = $schema; @@ -163,7 +169,7 @@ my $unit = $self->new($action,\%result); eval { - $result{result} = $unit->$method($unit->MakeParams($methodInfo)); + $result{result} = $unit->$handler($unit->MakeParams($methodInfo)); }; if (my $err = $@) { $result{state} = STATE_INVALID; @@ -182,7 +188,8 @@ $result{formData} = $transform->Transform($action->query); } - $result{formErrors} = $transform->Errors->as_list; + # ignore errors for new forms + #$result{formErrors} = $transform->Errors->as_list; $result{state} = STATE_NEW; }