Mercurial > pub > Impl
comparison Lib/IMPL/Web/Handler/SecureCookie.pm @ 231:ff1e8fa932f2
sync
author | sergey |
---|---|
date | Tue, 09 Oct 2012 03:09:41 +0400 |
parents | 6d8092d8ce1b |
children | 3cebcf6fdb9b |
comparison
equal
deleted
inserted
replaced
230:6d8092d8ce1b | 231:ff1e8fa932f2 |
---|---|
8 use IMPL::declare { | 8 use IMPL::declare { |
9 require => { | 9 require => { |
10 SecurityContext => 'IMPL::Security::Context', | 10 SecurityContext => 'IMPL::Security::Context', |
11 User => 'IMPL::Security::User', | 11 User => 'IMPL::Security::User', |
12 AuthSimple => 'IMPL::Security::Auth::Simple', | 12 AuthSimple => 'IMPL::Security::Auth::Simple', |
13 Exception => 'IMPL::Exception', | |
14 OperationException => '-IMPL::InvalidOperationException', | |
15 HttpResponse => '-IMPL::Web::HttpResponse' | |
13 }, | 16 }, |
14 base => { | 17 base => { |
15 'IMPL::Object' => undef, | 18 'IMPL::Object' => undef, |
16 'IMPL::Object::Autofill' => '@_', | 19 'IMPL::Object::Autofill' => '@_', |
17 'IMPL::Object::Serializable' => undef | 20 'IMPL::Object::Serializable' => undef |
66 } | 69 } |
67 } | 70 } |
68 | 71 |
69 } | 72 } |
70 | 73 |
71 $context = SecurityContext->new(principal => User->nobody, authority => $this); | 74 $context ||= SecurityContext->new(principal => User->nobody, authority => $this); |
72 | 75 |
73 my $httpResponse = $context->Impersonate($nextHandler); | 76 my $httpResponse = $context->Impersonate($nextHandler); |
74 | 77 |
75 $this->WriteResponse($httpResponse); | 78 die OperationException->new("A HttpResponse instance is expected") |
79 unless ref $httpResponse && eval { $httpResponse->isa(HttpResponse) }; | |
76 | 80 |
81 return $this->WriteResponse($httpResponse); | |
77 } | 82 } |
78 | 83 |
79 sub CreateContext { | 84 sub InitSession { |
80 my ($this,$user,$auth,$roles) = @_; | 85 my ($this,$user,$auth,$roles) = @_; |
81 | 86 |
82 my $sid = GenSSID(); | 87 my $sid = GenSSID(); |
83 my $cookie = GenSSID(); | 88 my $cookie = GenSSID(); |
84 | 89 |
88 }) | 93 }) |
89 | 94 |
90 my $context = $this->$manager->CreateSession( | 95 my $context = $this->$manager->CreateSession( |
91 sessionId => $sid, | 96 sessionId => $sid, |
92 principal => $user, | 97 principal => $user, |
93 auth => AuthSimple->(password => $cookie), | 98 auth => AuthSimple->new(password => $cookie), |
94 authority => $this, | 99 authority => $this, |
95 assignedRoles => $roles | 100 assignedRoles => $roles |
96 ); | 101 ); |
97 | 102 |
98 $context->Apply(); | 103 $context->Apply(); |
114 | 119 |
115 $response->cookies->{sid} = $data->{sid}; | 120 $response->cookies->{sid} = $data->{sid}; |
116 $response->cookies->{sdata} = $data->{sdata}; | 121 $response->cookies->{sdata} = $data->{sdata}; |
117 $response->cookies->{sign} = $sign; | 122 $response->cookies->{sign} = $sign; |
118 } | 123 } |
124 | |
125 return $response; | |
119 } | 126 } |
120 | 127 |
121 1; | 128 1; |
122 | 129 |
123 __END__ | 130 __END__ |
139 | 146 |
140 | 147 |
141 | 148 |
142 =head1 MEMBERS | 149 =head1 MEMBERS |
143 | 150 |
144 =over | 151 =head2 C<[get,set] salt> |
145 | |
146 =item C<[get,set] salt> | |
147 | 152 |
148 Скаляр, использующийся для подписи данных. | 153 Скаляр, использующийся для подписи данных. |
149 | 154 |
150 =back | 155 =head2 C<InitSession($user,$auth,$roles)> |
151 | 156 |
152 =cut | 157 =cut |