Mercurial > pub > Impl
comparison Lib/Engine/Security.pm @ 0:03e58a454b20
Создан репозитарий
| author | Sergey |
|---|---|
| date | Tue, 14 Jul 2009 12:54:37 +0400 |
| parents | |
| children | 16ada169ca75 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:03e58a454b20 |
|---|---|
| 1 use strict; | |
| 2 package Engine::Security; | |
| 3 use Security::Auth; | |
| 4 use Security; | |
| 5 use Engine::Security::Auth; | |
| 6 | |
| 7 our @AuthMethods; | |
| 8 my $AuthResult; | |
| 9 my $AuthMod; | |
| 10 my $AuthMethod; | |
| 11 | |
| 12 # use last auth method as default | |
| 13 $AuthMethod = Engine::Security::Auth->new(%{$AuthMethods[$#AuthMethods]}) if @AuthMethods; | |
| 14 | |
| 15 sub AuthenticateContext { | |
| 16 Security->CurrentSession(undef); #prevent previous session from closing | |
| 17 foreach my $method (@AuthMethods) { | |
| 18 my $AuthObj = Engine::Security::Auth->new(%$method); | |
| 19 $AuthResult = $AuthObj->DoAuth(); | |
| 20 # îáíîâèòü òåêóùèé êîíòåêñò áåçîïàñíîñòè, òîëüêî åñëè ýòî íåîáõîäèìî | |
| 21 $AuthObj->SetAuthResult($AuthResult) if $AuthResult->State == Security::AUTH_FAILED or $AuthResult->State == Security::AUTH_SUCCESS; | |
| 22 $AuthMethod = $AuthObj and last if $AuthResult->State != Security::AUTH_FAILED and $AuthResult->State != Security::AUTH_NOAUTH; | |
| 23 } | |
| 24 $AuthMod = $AuthMethod->AuthMod if $AuthMethod; | |
| 25 } | |
| 26 | |
| 27 sub SetAuthResult { | |
| 28 shift; | |
| 29 $AuthMethod->SetAuthResult(@_) if $AuthMethod; | |
| 30 } | |
| 31 | |
| 32 sub AuthMod { | |
| 33 return $AuthMethod ? $AuthMethod->AuthMod : undef; | |
| 34 } | |
| 35 | |
| 36 1; |
