Mercurial > pub > Impl
comparison Lib/IMPL/Web/Application/Resource.pm @ 330:fe725fad2d90
Added access checking to web resources
author | sergey |
---|---|
date | Tue, 04 Jun 2013 19:25:54 +0400 |
parents | 546957c50a36 |
children | 04a093f0a5a6 |
comparison
equal
deleted
inserted
replaced
329:50ff1595bd62 | 330:fe725fad2d90 |
---|---|
52 my $operation = $this->contract->verbs->{ lc($verb) }; | 52 my $operation = $this->contract->verbs->{ lc($verb) }; |
53 | 53 |
54 die NotAllowedException->new( | 54 die NotAllowedException->new( |
55 allow => join( ',', map( uc, keys %{ $this->contract->verbs } ) ) ) | 55 allow => join( ',', map( uc, keys %{ $this->contract->verbs } ) ) ) |
56 unless $operation; | 56 unless $operation; |
57 | |
58 $this->AccessCheck($verb); | |
57 | 59 |
58 # в случае, когда один ресурс вызывает HTTP метод другого ресурса, нужно | 60 # в случае, когда один ресурс вызывает HTTP метод другого ресурса, нужно |
59 # сохранить оригинальный resourceLocation | 61 # сохранить оригинальный resourceLocation |
60 $action->context->{resourceLocation} ||= $this->location; | 62 $action->context->{resourceLocation} ||= $this->location; |
61 | 63 |
68 } | 70 } |
69 | 71 |
70 return _InvokeDelegate($operation, $this, $action ); | 72 return _InvokeDelegate($operation, $this, $action ); |
71 } | 73 } |
72 | 74 |
75 sub AccessCheck { | |
76 | |
77 } | |
78 | |
73 sub PrepareEnvironment { | 79 sub PrepareEnvironment { |
74 my ($this) = @_; | 80 my ($this) = @_; |
75 | 81 |
76 my @stack; | 82 my @stack; |
77 my $env = {}; | 83 my $env = {}; |
87 | 93 |
88 # это реализация по умолчанию, базируется информации о ресурсах, содержащийся | 94 # это реализация по умолчанию, базируется информации о ресурсах, содержащийся |
89 # в контракте. | 95 # в контракте. |
90 sub FetchChildResource { | 96 sub FetchChildResource { |
91 my ( $this, $childId ) = @_; | 97 my ( $this, $childId ) = @_; |
98 | |
99 $this->AccessCheck('FETCH'); | |
92 | 100 |
93 my ( $info, $childIdParts ) = | 101 my ( $info, $childIdParts ) = |
94 $this->contract->FindChildResourceInfo($childId); | 102 $this->contract->FindChildResourceInfo($childId); |
95 | 103 |
96 die NotFoundException->new( $this->location->url, $childId ) unless $info; | 104 die NotFoundException->new( $this->location->url, $childId ) unless $info; |