/** * Construtor */ public function __construct($lCria = FALSE) { $aSessao = Zend_session::namespaceGet('sessao'); if ($lCria == FALSE) { if (!empty($aSessao['acl'])) { return; } else { $this->_acl = new Zend_Acl(); } } else { $this->_acl = $aSessao['acl']; } $this->_setupResourcesPrivileges(); $this->carregaMenus(); if (Zend_Auth::getInstance()->hasIdentity()) { $this->_setupResourcesPrivilegesUserAuth(); } $this->_saveAcl(); }
/** * Controla o tempo de inatividade do usuário no sistema para expiração da sessão */ public function sessionControl() { // Inicia a sessão if (!Zend_Session::isStarted()) { Zend_session::start(); } $oSessao = new Zend_Session_Namespace('controle_sessao'); // Tempo de invativade em segundos para encerramento da sessão $iTempoMaximoDeInatividadeEmSegundos = 1800; // 30 minutos // Horário da última atividade do usuário $iUltimaAtivade = isset($oSessao->ultima_atividade) ? $oSessao->ultima_atividade : FALSE; // Verifica se o usuário está logado $lUsuarioLogado = Zend_Auth::getInstance()->getIdentity() != NULL; // Redireciona o usuário se o tempo de inatividade expirar if ($iUltimaAtivade && time() - $iUltimaAtivade > $iTempoMaximoDeInatividadeEmSegundos && $lUsuarioLogado) { Zend_Auth::getInstance()->clearIdentity(); $oRedirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector'); $oRedirector->gotoSimpleAndExit('index', 'logout', 'auth'); } // Seta o horário da última ação do usuário $oSessao->ultima_atividade = time(); }