Right.class.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Define a user right (right = crud on scope + firm [+ uid] ).
  4. * @author valentin carruesco
  5. * @category Core
  6. * @license MIT
  7. */
  8. class Right extends Entity {
  9. public $id,$firm,$read,$edit,$delete,$recursive,$configure,$scope,$uid,$targetScope,$targetUid;
  10. public $entityLabel = 'Droit applicatif';
  11. protected $fields = array(
  12. 'id' => array('label'=>'Identifiant', 'type'=>'key'),
  13. 'firm' => array('label'=>'Id de l\'établissement concerné', 'type'=>'integer','link'=>'class/Firm.class.php'),
  14. 'read' => array('label'=>'Droit de lecture', 'type'=>'boolean'),
  15. 'edit' => array('label'=>'Droit d\'édition', 'type'=>'boolean'),
  16. 'delete' => array('label'=>'Droit de supression', 'type'=>'boolean'),
  17. 'recursive' => array('label'=>'Droit récursif', 'type'=>'boolean'),
  18. 'configure' => array('label'=>'Droit de configuration', 'type'=>'boolean'),
  19. 'uid' => array('label'=>'Identifiant de l\'entité liée', 'type'=>'string'),
  20. 'scope' => array('label'=>'Périmetre de l\'entité liée', 'type'=>'string'),
  21. 'targetScope' => array('label'=>'Périmetre de l\'entité cible', 'type'=>'text'),
  22. 'targetUid' => array('label'=>'Identifiant de l\'entité cible', 'type'=>'integer')
  23. );
  24. //Colonnes indexées
  25. public $indexes = array('firm', 'targetScope', 'targetUid', 'scope', 'uid');
  26. //enregistrement d'un droit possible sur un module, une entité ...
  27. public static function register($scope,$options){
  28. //options par defaut
  29. $options = array_merge(array(
  30. 'global' => true,
  31. 'check' => function($action,$right){
  32. global $myUser;
  33. //Droits sur la section/le module sans cible entité
  34. if($right->uid != 0) throw new Exception('Droit non ciblé, ne pas spécifier d\'id');
  35. if($myUser->superadmin) throw new Exception('Vous n\'avez pas les privilèges pour définir des droits dans ce contexte');
  36. }
  37. ),$options);
  38. $GLOBALS['rights'][$scope] = $options;
  39. }
  40. //récuperation des meta information d'un droit
  41. public static function getOption($scope) {
  42. if(!isset($GLOBALS['rights'][$scope])) return;
  43. return $GLOBALS['rights'][$scope];
  44. }
  45. //récuperation de la liste des droits possibles
  46. public static function availables() {
  47. if(!isset($GLOBALS['rights'])) return array();
  48. return $GLOBALS['rights'];
  49. }
  50. function __construct(){
  51. parent::__construct();
  52. $this->uid = 0;
  53. $this->firm = 0;
  54. $this->read = 0;
  55. $this->edit = 0;
  56. $this->delete = 0;
  57. $this->configure = 0;
  58. $this->recursive = 0;
  59. }
  60. }