1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
class Auth_ACL
{
/**
* Etat des ressources pour l'utilisateur
* @var array
* @access private
*/
private $userRessources;
/**
* Etat des ressources pour le groupe
* @var array
* @access private
*/
private $groupRessources;
/**
* L'utilisateur à t'il tous les droits
* @var boolean
* @access private
*/
private $isGod;
/**
* Constructeur
* @param boolean $god
*/
public function __construct($god = false)
{
$this->userRessources = array();
$this->groupRessources = array();
$this->isGod = $god;
}
/**
* Ajoute les ressources disponibles
* @param mixed $ressources Tableau de ressources ou ressource seule
* @return void
*/
public function addRessource($ressources)
{
if(is_array($ressources))
{
foreach($ressources as $ressource)
{
$this->groupRessources[$ressource] = false;
$this->userRessources[$ressource] = false;
}
}
else
{
$this->groupRessources[$ressources] = false;
$this->userRessources[$ressources] = false;
}
}
/**
* Autorise (ou non) le groupe courant sur la ressource spécifiée
* @param mixed $ressources Tableau de ressources ou ressource seule
* @param boolean $isAllowed Autorise ou non accès à la ressources
* @return void
*/
public function allowGroup($ressources,$isAllowed)
{
if(is_array($ressources))
{
foreach($ressources as $ressource)
$this->groupRessources[$ressource] = $isAllowed;
}
else
{
$this->groupRessources[$ressources] = $isAllowed;
}
}
/**
* Autorise (ou non) l'utilisateur courant sur la ressource spécifiée
* @param mixed $ressources Tableau de ressources ou ressource seule
* @param boolean $isAllowed Autorise ou non accès à la ressources
* @return void
*/
public function allowUser($ressources,$isAllowed)
{
if(is_array($ressources))
{
foreach($ressources as $ressource)
$this->userRessources[$ressource] = $isAllowed;
}
else
{
$this->userRessources[$ressources] = $isAllowed;
}
}
/**
* Vérifie si l'accès à la ressource est autorisé.
* Un accès est autorisé si le groupe et/ou l'utilisateur est autorisé
* @param string $ressource Ressource à vérifier
* @return boolean
*/
public function isAllowed($ressource)
{
if($this->isGod)
return true;
if(isset($this->groupRessources[$ressource]))
{
if($this->groupRessources[$ressource])
return true;
elseif($this->groupRessources[$ressource] | $this->userRessources[$ressource])
return true;
else
return false;
}
else
{
throw new Util_ExceptionHandler('Ressource inconnue : '.$ressource.'<br />');
}
}
public function __sleep()
{
return array('isGod','groupRessources','userRessources');
}
} |
Partager