/** * Recherche rÈcursive du droit le plus fort d'un utilisateur sur un noeud. * * @return integer Droit (entre 0 et 70). * @author FrÈdÈric Mossmann <*****@*****.**> */ public function getLevel_r($node_type, $node_id, $user_type = "-1", $user_id = "-1", $fusible = 9) { if ($fusible-- <= 0) { return 0; } $level = (int) Kernel::getLevel($node_type, $node_id, $user_type, $user_id); $node = Kernel::getNodeParents($node_type, $node_id); foreach ($node as $parent_node) { $level = max($level, Kernel::getLevel_r($parent_node['type'], $parent_node['id'], $user_type, $user_id, $fusible)); } return $level; }
public function checkLoginAccess($login) { if (trim($login) == '') { die('Pas de login dans l\'URL'); } $userinfo = Kernel::getUserInfo('LOGIN', $login); if (0 == sizeof($userinfo)) { die('Login inconnu'); } $level = 0; $level = Kernel::getLevel_r($userinfo['type'], $userinfo['id']); $level = max($level, Kernel::getLevel_r('ROOT', '0')); // Test via le module assistance $ok = false; $animateur_dao =& CopixDAOFactory::create("kernel|kernel_animateurs"); $animateur = $animateur_dao->get(_currentUser()->getExtra("type"), _currentUser()->getExtra("id")); if ($animateur && isset($animateur->can_comptes) && $animateur->can_comptes) { $assistance_service =& CopixClassesFactory::Create('assistance|assistance'); $user_assistance = $assistance_service->getAssistanceUsers(); if (!$user_assistance) { return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('assistance||users', array('error' => 'forbidden'))); } foreach ($user_assistance as $ville_id => $ville) { foreach ($ville as $ecole_id => $ecole) { foreach ($ecole->personnels as $personnel_id => $personnel) { if ($personnel->login == $login) { $ok = true; // echo "<pre>"; print_r($personnel); die("</pre>"); } } } } if ($ok) { $level = 70; } } if ($level < 70) { // A vérifier... die('Pas le droit !'); } return $userinfo; }