/** * * @param unknown $poIdentity * @param unknown $psUrlFrom */ public function authentication($poAuthService, $poIdentity, $psUrlFrom = null, $poForm = null, $psType = 'onion') { $lsStatus = null; if ($poIdentity->getActive() == 1) { $laUserContext = null; if ($poIdentity->get('stIpContext') !== null) { $lsUserAgent = '*'; if ($poIdentity->get('stUserAgent') !== null) { $lsUserAgent = $poIdentity->get('stUserAgent'); } $laUserContext = array($poIdentity->get('stIpContext') => array('denied' => $poIdentity->get('isContextDenied'), $lsUserAgent => $poIdentity->get('stRegistrationToken'))); } if (Context::hasContextAccess($laUserContext)) { $loSession = new Session(); $loSession->clearRegister('OnionAuth'); $loSession->clearRegister('storage', 'Zend_Auth'); $poIdentity->getObject(); $poIdentity->set('stPassword', 'nono'); $poIdentity->set('stPasswordSalt', ''); $poIdentity->set('stAnswer', ''); $loSession->setRegister('OnionAuth', $poIdentity); $loIdentity = $loSession->getRegister('OnionAuth'); $poAuthService->getStorage()->write($poIdentity); if ($poForm->get('rememberme')->getValue() == 1) { $laOptions = Config::getAppOptions('settings'); $loSessionManager = new SessionManager(); $loSessionManager->rememberMe($laOptions['sessionLifeTime']); } Debug::debug($poIdentity->getUsername() . " [SUCCESS by {$psType}]"); Access::log($poIdentity, "SUCCESS by " . $psType); if ($psUrlFrom !== null) { if ('/' !== $psUrlFrom) { $psUrlFrom = base64_decode($psUrlFrom); } Debug::debug("Redirect to: ({$psUrlFrom})"); $this->redirect()->toUrl($psUrlFrom); } } else { $poForm->get('stUsername')->setMessages(array("Permissão negada para o contexto de acesso!")); $lsStatus = "CONTEXT DENIED"; } } else { $poForm->get('stUsername')->setMessages(array("Usuário desativado!")); $lsStatus = "USER DISABLED"; } return $lsStatus; }