Mercurial > pub > Impl
view Lib/IMPL/Web/QueryHandler/AuthCookie.pm @ 72:eac47fa4f262
docs
author | wizard |
---|---|
date | Fri, 26 Mar 2010 16:26:31 +0300 |
parents | 8c7b88bdb663 |
children |
line wrap: on
line source
package IMPL::Web::QueryHandler::AuthCookie; use base qw(IMPL::Web::QueryHandler); 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) = @_; my $method = $action->query->cookie('method') || 'simple'; if ($method eq 'simple') { my $sid = $action->query->cookie('sid'); if ($action->query->cookie('sign') eq md5_hex( $this->salt, $sid, $this->salt ) ) { my $context = $action->application->security->Session( id => $sid, method => 'simple' ); my ($result,$challenge) = $context->auth->ValidateSession($sid); if ($result == AUTH_SUCCESS) { return $context->Impersonate($nextHandler); } else { return $nextHandler->(); } } } else { die new IMPL::Exception("Unknown auth method",$method); } } 1;