/** * Gestion du type basic * * @param string $pString la chaine à tester * @param CopixUser $pUser l'utilisateur dont on teste les droits */ private function _basic($pString, $pUser) { switch ($pString) { case 'admin': foreach ($pUser->getGroups() as $handler => $arGroupForHandler) { if ($handler == 'auth|dbgrouphandler') { $groupHandler = CopixGroupHandlerFactory::create($handler); foreach ($arGroupForHandler as $id => $groupCaption) { $informations = $groupHandler->getInformations($id); if ($informations->superadmin_dbgroup) { return true; } } } } return false; case 'registered': return $pUser->isConnected(); } }
public function getGroups() { if (!empty($this->_groups) && CopixConfig::instance()->copixauth_cache == true) { return $this->_groups; } $results = array(); //On parcours la liste des gestionnaires de groupes enregistrés. foreach (CopixConfig::instance()->copixauth_getRegisteredGroupHandlers() as $handlerDefinition) { $handler = CopixGroupHandlerFactory::create($handlerDefinition['name']); $arGroupHandler = array(); //Pour chaque utilisateur testé lors du processus de login, on demande la liste de ses groupes foreach ($this->getResponses(true) as $logResult) { foreach ($handler->getUserGroups($logResult->getId(), $logResult->getHandler()) as $id => $group) { $arGroupHandler[$id] = $group; } } //on rajoute également les groupes pour les "non authentifiés" (groupes anonymes par exemple) foreach (CopixConfig::instance()->copixauth_getRegisteredUserHandlers() as $userHandler => $userHandlerInformations) { foreach ($handler->getUserGroups(null, $userHandler) as $id => $group) { $arGroupHandler[$id] = $group; } } if (count($arGroupHandler)) { $results[$handlerDefinition['name']] = $arGroupHandler; } } return $this->_groups = $results; }