Mercurial > pub > Impl
comparison Lib/IMPL/Web/QueryHandler/AuthCookie.pm @ 69:8c7b88bdb663
Cookie Simple auth support
author | wizard |
---|---|
date | Wed, 24 Mar 2010 17:41:41 +0300 |
parents | 739f1288ca84 |
children |
comparison
equal
deleted
inserted
replaced
68:739f1288ca84 | 69:8c7b88bdb663 |
---|---|
2 | 2 |
3 use base qw(IMPL::Web::QueryHandler); | 3 use base qw(IMPL::Web::QueryHandler); |
4 use Digest::MD5 qw(md5_hex); | 4 use Digest::MD5 qw(md5_hex); |
5 | 5 |
6 use IMPL::Class::Property; | 6 use IMPL::Class::Property; |
7 use IMPL::Security::Auth qw(:Const); | |
7 | 8 |
8 BEGIN { | 9 BEGIN { |
9 public property salt => prop_all; | 10 public property salt => prop_all; |
11 } | |
12 | |
13 sub CTOR { | |
14 my ($this) = @_; | |
15 | |
16 | |
10 } | 17 } |
11 | 18 |
12 sub Process { | 19 sub Process { |
13 my ($this,$action,$nextHandler) = @_; | 20 my ($this,$action,$nextHandler) = @_; |
14 | 21 |
15 my $method = $action->query->cookie('method') || 'simple'; | 22 my $method = $action->query->cookie('method') || 'simple'; |
16 | 23 |
17 if ($method eq 'simple') { | 24 if ($method eq 'simple') { |
18 | 25 |
26 my $sid = $action->query->cookie('sid'); | |
27 | |
19 if ($action->query->cookie('sign') eq md5_hex( | 28 if ($action->query->cookie('sign') eq md5_hex( |
20 $this->salt, | 29 $this->salt, |
21 $action->query->cookie('sid'), | 30 $sid, |
22 $this->salt | 31 $this->salt |
23 ) ) { | 32 ) ) { |
24 | 33 |
25 my $context = $action->application->security->Session($action->query->cookie('sid')); | 34 my $context = $action->application->security->Session( |
35 id => $sid, | |
36 method => 'simple' | |
37 ); | |
26 | 38 |
27 $context->auth-> | 39 my ($result,$challenge) = $context->auth->ValidateSession($sid); |
28 | 40 |
41 if ($result == AUTH_SUCCESS) { | |
42 return $context->Impersonate($nextHandler); | |
43 } else { | |
44 return $nextHandler->(); | |
45 } | |
29 } | 46 } |
30 | |
31 } else { | 47 } else { |
32 die new IMPL::Exception("Unknown auth method",$method); | 48 die new IMPL::Exception("Unknown auth method",$method); |
33 } | 49 } |
34 } | 50 } |
35 | 51 |