Mercurial > pub > Impl
diff 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 |
line wrap: on
line diff
--- a/Lib/IMPL/Web/QueryHandler/AuthCookie.pm Tue Mar 23 16:55:25 2010 +0300 +++ b/Lib/IMPL/Web/QueryHandler/AuthCookie.pm Wed Mar 24 17:41:41 2010 +0300 @@ -4,11 +4,18 @@ use Digest::MD5 qw(md5_hex); use IMPL::Class::Property; +use IMPL::Security::Auth qw(:Const); BEGIN { public property salt => prop_all; } +sub CTOR { + my ($this) = @_; + + +} + sub Process { my ($this,$action,$nextHandler) = @_; @@ -16,18 +23,27 @@ if ($method eq 'simple') { + my $sid = $action->query->cookie('sid'); + if ($action->query->cookie('sign') eq md5_hex( $this->salt, - $action->query->cookie('sid'), + $sid, $this->salt ) ) { - my $context = $action->application->security->Session($action->query->cookie('sid')); + my $context = $action->application->security->Session( + id => $sid, + method => 'simple' + ); + + my ($result,$challenge) = $context->auth->ValidateSession($sid); - $context->auth-> - + if ($result == AUTH_SUCCESS) { + return $context->Impersonate($nextHandler); + } else { + return $nextHandler->(); + } } - } else { die new IMPL::Exception("Unknown auth method",$method); }