Mercurial > pub > Impl
view Lib/Engine/Security.pm @ 104:196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
Minor and major fixes almost for everything.
A 'Source' property of the ValidationErrors generated from a NodeSet or a NodeList is subject to change in the future.
author | wizard |
---|---|
date | Tue, 11 May 2010 02:42:59 +0400 |
parents | 16ada169ca75 |
children |
line wrap: on
line source
use strict; package Engine::Security; use Security::Auth; use Security; use Engine::Security::Auth; our @AuthMethods; my $AuthResult; my $AuthMod; my $AuthMethod; # use last auth method as default $AuthMethod = Engine::Security::Auth->new(%{$AuthMethods[$#AuthMethods]}) if @AuthMethods; sub AuthenticateContext { Security->CurrentSession(undef); #prevent previous session from closing foreach my $method (@AuthMethods) { my $AuthObj = Engine::Security::Auth->new(%$method); $AuthResult = $AuthObj->DoAuth(); # обновить текущий контекст безопасности, только если это необходимо $AuthObj->SetAuthResult($AuthResult) if $AuthResult->State == Security::AUTH_FAILED or $AuthResult->State == Security::AUTH_SUCCESS; $AuthMethod = $AuthObj and last if $AuthResult->State != Security::AUTH_FAILED and $AuthResult->State != Security::AUTH_NOAUTH; } $AuthMod = $AuthMethod->AuthMod if $AuthMethod; } sub SetAuthResult { shift; $AuthMethod->SetAuthResult(@_) if $AuthMethod; } sub AuthMod { return $AuthMethod ? $AuthMethod->AuthMod : undef; } 1;