123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * Define a user right (right = crud on scope + firm [+ uid] ).
- * @author valentin carruesco
- * @category Core
- * @license MIT
- */
- class Right extends Entity {
- public $id,$firm,$read,$edit,$delete,$recursive,$configure,$scope,$uid,$targetScope,$targetUid;
- public $entityLabel = 'Droit applicatif';
- protected $fields = array(
- 'id' => array('label'=>'Identifiant', 'type'=>'key'),
- 'firm' => array('label'=>'Id de l\'établissement concerné', 'type'=>'integer','link'=>'class/Firm.class.php'),
- 'read' => array('label'=>'Droit de lecture', 'type'=>'boolean'),
- 'edit' => array('label'=>'Droit d\'édition', 'type'=>'boolean'),
- 'delete' => array('label'=>'Droit de supression', 'type'=>'boolean'),
- 'recursive' => array('label'=>'Droit récursif', 'type'=>'boolean'),
- 'configure' => array('label'=>'Droit de configuration', 'type'=>'boolean'),
- 'uid' => array('label'=>'Identifiant de l\'entité liée', 'type'=>'string'),
- 'scope' => array('label'=>'Périmetre de l\'entité liée', 'type'=>'string'),
- 'targetScope' => array('label'=>'Périmetre de l\'entité cible', 'type'=>'text'),
- 'targetUid' => array('label'=>'Identifiant de l\'entité cible', 'type'=>'integer')
- );
-
- //Colonnes indexées
- public $indexes = array('firm', 'targetScope', 'targetUid', 'scope', 'uid');
-
- //enregistrement d'un droit possible sur un module, une entité ...
- public static function register($scope,$options){
- //options par defaut
- $options = array_merge(array(
- 'global' => true,
- 'check' => function($action,$right){
- global $myUser;
- //Droits sur la section/le module sans cible entité
- if($right->uid != 0) throw new Exception('Droit non ciblé, ne pas spécifier d\'id');
- if($myUser->superadmin) throw new Exception('Vous n\'avez pas les privilèges pour définir des droits dans ce contexte');
- }
- ),$options);
- $GLOBALS['rights'][$scope] = $options;
- }
- //récuperation des meta information d'un droit
- public static function getOption($scope) {
- if(!isset($GLOBALS['rights'][$scope])) return;
- return $GLOBALS['rights'][$scope];
- }
- //récuperation de la liste des droits possibles
- public static function availables() {
- if(!isset($GLOBALS['rights'])) return array();
- return $GLOBALS['rights'];
- }
- function __construct(){
- parent::__construct();
- $this->uid = 0;
- $this->firm = 0;
- $this->read = 0;
- $this->edit = 0;
- $this->delete = 0;
- $this->configure = 0;
- $this->recursive = 0;
- }
- }
|