Overview

Packages

  • Auth
  • Config
  • Controller
  • Date
  • Db
  • Feed
    • Abstract
    • Writers
  • File
    • Decorator
  • Form
    • Element
  • Image
  • Log
    • Writer
  • Net
    • Exception
  • None
  • PHP
  • PHPMailer
  • Session
  • Util
  • Validate
    • Validator
  • Zend
    • Registry

Classes

  • Auth_ACL
  • Auth_Auth
  • Auth_Bcrypt
  • Auth_Util
  • Auth_WithRole
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: 
  3: /**
  4:  * Pry Framework
  5:  *
  6:  * LICENSE
  7:  *
  8:  * This source file is subject to the new BSD license that is bundled
  9:  * with this package in the file LICENSE.txt.
 10:  * 
 11:  * @version $Revision: 276 $
 12:  */
 13: 
 14: /**
 15:  * Classe permettant la gestion de roles et de permissions.
 16:  * 
 17:  * <code>
 18:  * $ACL = new Auth_ACl();
 19:  * $ACL->addRole('Writer',array('read','write'));
 20:  * $ACL->addPermission('Writer','delete');
 21:  * 
 22:  * if($ACL->hasPermission('write'))
 23:  *      echo 'ok';
 24:  * else
 25:  *      echo 'ko';
 26:  * </code>
 27:  * 
 28:  * @category Pry
 29:  * @package Auth
 30:  * @version 2.0.0 
 31:  * @author Olivier ROGER <oroger.fr>
 32:  *       
 33:  */
 34: class Auth_ACL
 35: {
 36:     /** Liste des roles associé */
 37:     private $roles = array();
 38:     
 39:     /** Liste des permissions triées par roles */
 40:     private $permissions = array();
 41:     
 42:     public function __construct()
 43:     {
 44:         
 45:     }
 46:     
 47:     /**
 48:      * Ajout d'un role
 49:      * @param string $roleName Nom du role
 50:      * @param array $permissions Les permissions associées au role
 51:      */
 52:     public function addRole($roleName,array $permissions)
 53:     {
 54:         $this->roles[] = $roleName;
 55:         $this->permissions[$roleName] = array();
 56:         foreach($permissions as $perm)
 57:             $this->permissions[$roleName][$perm] = true;
 58:     }
 59:     
 60:     /**
 61:      * Ajout d'une permission à un role spécifique
 62:      * @param string $roleName Nom du role concerné
 63:      * @param string $permission Nom de la permission 
 64:      */
 65:     public function addPermission($roleName,$permission)
 66:     {
 67:         if(!isset($this->permissions[$roleName]))
 68:             $this->permissions[$roleName] = array();
 69:         
 70:         $this->permissions[$roleName][$permission] = true;
 71:     }
 72:     
 73:     /**
 74:      * Supprime un role et les permission associées
 75:      * @param type $name
 76:      * @return boolean 
 77:      */
 78:     public function deleteRole($name)
 79:     {
 80:         $keyRole = array_search($name, $this->roles);
 81:         if($keyRole !== false)
 82:         {
 83:             unset($this->roles[$keyRole]);
 84:             unset($this->permissions[$name]);
 85:             return true;
 86:         }
 87:         
 88:         return false;
 89:     }
 90:     
 91:     /**
 92:      * Vérifie que la permission est autorisée
 93:      * @param string $permName Nom de la permission à tester
 94:      * @return boolean true si autorisé false sinon
 95:      */
 96:     public function hasPermission($permName)
 97:     {
 98:         foreach($this->roles as $role) {
 99:             if(isset($this->permissions[$role][$permName]) && $this->permissions[$role][$permName] == true)
100:                 return true;
101:         }
102:         
103:         return false;
104:     }
105:     
106:     /**
107:      * Méthode magique pour sérialiser correctement les données
108:      * @return array 
109:      */
110:     public function __sleep()
111:     {
112:         return array('roles', 'permissions');
113:     }
114: }
115: 
116: ?>
Pry Framework API documentation generated by ApiGen 2.6.1