/** * Verifica se o usuário tem acesso a um determinado módulo. * * Quando for um módulo de unidade, basta verificar se existe uma permissão * para a lotação do usuário no grupo da unidade. * * Já quando o módulo for global, verifica se existe alguma lotação para o * módulo, independente do grupo (unidade). * * @param Novosga\Model\Util\UsuarioSessao $usuario * @param Novosga\Model\Modulo $modulo */ public function hasAccess(UsuarioSessao $usuario, Modulo $modulo) { if ($modulo->isGlobal()) { // para modulos globais return $usuario->hasPermissao($modulo); } else { if (!$usuario->getUnidade()) { throw new Exception(_('Para acessar esse módulo primeiro é necessário escolher uma unidade.')); } // verificando se existe permissao para a lotacao atual do usuario $lotacao = $usuario->getLotacao(); return $usuario->hasPermissao($modulo, $lotacao->getCargo()); } }
/** * {@inheritDoc} */ public function isGlobal() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'isGlobal', array()); return parent::isGlobal(); }