comparison Lib/IMPL/Web/Application/ResourceContract.pm @ 330:fe725fad2d90

Added access checking to web resources
author sergey
date Tue, 04 Jun 2013 19:25:54 +0400
parents 673581380e79
children 2ff1726c066c
comparison
equal deleted inserted replaced
329:50ff1595bd62 330:fe725fad2d90
6 use IMPL::declare { 6 use IMPL::declare {
7 require => { 7 require => {
8 Exception => 'IMPL::Exception', 8 Exception => 'IMPL::Exception',
9 ArgumentException => '-IMPL::ArgumentException', 9 ArgumentException => '-IMPL::ArgumentException',
10 KeyNotFoundException => '-IMPL::KeyNotFoundException', 10 KeyNotFoundException => '-IMPL::KeyNotFoundException',
11 ResourceClass => 'IMPL::Web::Application::Resource' 11 ResourceClass => 'IMPL::Web::Application::CustomResource',
12 CustomContract => 'IMPL::Web::Application::CustomResourceContract',
13 Factory => 'IMPL::Object::Factory'
12 }, 14 },
13 base => [ 'IMPL::Object' => undef ], 15 base => [ 'IMPL::Object' => undef ],
14 props => [ 16 props => [
15 resourceFactory => PROP_ALL, 17 resourceFactory => PROP_ALL,
16 verbs => PROP_ALL, 18 verbs => PROP_ALL,
21 23
22 sub CTOR { 24 sub CTOR {
23 my $this = shift; 25 my $this = shift;
24 my %args = @_; 26 my %args = @_;
25 27
26 $this->resourceFactory( $args{resourceFactory} || ResourceClass ); 28 my $factory = delete $args{resourceFactory} || ResourceClass;
27 29 my $resources = delete $args{resources} || [];
28 my $resources = $args{resources} || []; 30 my $verbs = delete $args{verbs} || {};
29 my $verbs = $args{verbs} || {};
30 31
31 die ArgumentException->new( 32 die ArgumentException->new(
32 resources => 'resources parameter must be a reference to an array' ) 33 resources => 'resources parameter must be a reference to an array' )
33 unless ref $resources eq 'ARRAY'; 34 unless ref $resources eq 'ARRAY';
34 35
55 $this->_regexpResources->Append($res); 56 $this->_regexpResources->Append($res);
56 } 57 }
57 } 58 }
58 59
59 $this->_namedResources( \%nameMap ); 60 $this->_namedResources( \%nameMap );
61
62 $this->resourceFactory( %args ? Factory->new($factory,\%args) : $factory );
60 } 63 }
61 64
62 sub AddChildResourceContract { 65 sub AddChildResourceContract {
63 my ($this,$res) = @_; 66 my ($this,$res) = @_;
64 67