comparison Lib/IMPL/Web/QueryHandler/SecureCookie.pm @ 97:964587c5183c

Added SecureCall to Web QueryHandlers stack many bug fixes to Security and Web Application modules
author wizard
date Tue, 04 May 2010 04:04:37 +0400
parents 67eb8eaec3d4
children a9f4ba4783eb
comparison
equal deleted inserted replaced
96:4c55aed00ff2 97:964587c5183c
21 sub Process { 21 sub Process {
22 my ($this,$action,$nextHandler) = @_; 22 my ($this,$action,$nextHandler) = @_;
23 23
24 return undef unless $nextHandler; 24 return undef unless $nextHandler;
25 25
26 local $IMPL::Security::authority = $this;
27
26 my $method = $action->query->cookie('method') || 'simple'; 28 my $method = $action->query->cookie('method') || 'simple';
27 29
28 if ($method eq 'simple') { 30 if ($method eq 'simple') {
29 31
30 my $sid = $action->query->cookie('sid'); 32 my $sid = $action->query->cookie('sid');
40 $sid, 42 $sid,
41 $cookie, 43 $cookie,
42 $this->salt 44 $this->salt
43 ) 45 )
44 ) { 46 ) {
45 local $IMPL::Security::authority = $this;
46
47 my $context = $action->application->security->sourceSession->find( 47 my $context = $action->application->security->sourceSession->find(
48 { id => $sid } 48 { id => $sid }
49 ) or return $nextHandler->(); 49 ) or return $nextHandler->();
50 50
51 my ($result,$challenge) = $context->auth->ValidateSession($cookie); 51 my ($result,$challenge) = $context->auth->ValidateSession($cookie);
54 $context->authority($this); 54 $context->authority($this);
55 return $context->Impersonate($nextHandler); 55 return $context->Impersonate($nextHandler);
56 } else { 56 } else {
57 return $nextHandler->(); 57 return $nextHandler->();
58 } 58 }
59 } else {
60 return $nextHandler->();
59 } 61 }
60 } else { 62 } else {
61 die new IMPL::Exception("Unknown auth method",$method); 63 return $nextHandler->();
62 } 64 }
63 } 65 }
64 66
65 sub WriteResponse { 67 sub WriteResponse {
66 my ($this,$response,$sid,$cookie,$method) = @_; 68 my ($this,$response,$sid,$cookie,$method) = @_;
70 $sid, 72 $sid,
71 $cookie, 73 $cookie,
72 $this->salt 74 $this->salt
73 ); 75 );
74 76
75 $this->setCookie(sid => $sid); 77 $response->setCookie(sid => $sid);
76 $this->setCookie(sdata => $cookie); 78 $response->setCookie(sdata => $cookie);
77 $this->setCookie(sign => $sign); 79 $response->setCookie(sign => $sign);
78 $this->setCookie(method => $method) if $method; 80 $response->setCookie(method => $method) if $method;
79 } 81 }
80 82
81 1; 83 1;
82 84
83 __END__ 85 __END__