AdminPermissionMap.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Sonata\AdminBundle\Security\Acl\Permission;
  11. use Symfony\Component\Security\Acl\Permission\PermissionMapInterface;
  12. /**
  13. * This is basic permission map complements the masks which have been defined
  14. * on the standard implementation of the MaskBuilder.
  15. *
  16. * @author Johannes M. Schmitt <schmittjoh@gmail.com>
  17. * @author Thomas Rabaix <thomas.rabaix@gmail.com>
  18. */
  19. class AdminPermissionMap implements PermissionMapInterface
  20. {
  21. const PERMISSION_VIEW = 'VIEW';
  22. const PERMISSION_EDIT = 'EDIT';
  23. const PERMISSION_CREATE = 'CREATE';
  24. const PERMISSION_DELETE = 'DELETE';
  25. const PERMISSION_UNDELETE = 'UNDELETE';
  26. const PERMISSION_LIST = 'LIST';
  27. const PERMISSION_OPERATOR = 'OPERATOR';
  28. const PERMISSION_MASTER = 'MASTER';
  29. const PERMISSION_OWNER = 'OWNER';
  30. /**
  31. * Map each permission to the permissions it should grant access for
  32. * fe. grant access for the view permission if the user has the edit permission
  33. *
  34. * @var array
  35. */
  36. private $map = array(
  37. self::PERMISSION_VIEW => array(
  38. MaskBuilder::MASK_VIEW,
  39. MaskBuilder::MASK_LIST,
  40. MaskBuilder::MASK_EDIT,
  41. MaskBuilder::MASK_OPERATOR,
  42. MaskBuilder::MASK_MASTER,
  43. MaskBuilder::MASK_OWNER
  44. ),
  45. self::PERMISSION_EDIT => array(
  46. MaskBuilder::MASK_EDIT,
  47. MaskBuilder::MASK_OPERATOR,
  48. MaskBuilder::MASK_MASTER,
  49. MaskBuilder::MASK_OWNER
  50. ),
  51. self::PERMISSION_CREATE => array(
  52. MaskBuilder::MASK_CREATE,
  53. MaskBuilder::MASK_OPERATOR,
  54. MaskBuilder::MASK_MASTER,
  55. MaskBuilder::MASK_OWNER
  56. ),
  57. self::PERMISSION_DELETE => array(
  58. MaskBuilder::MASK_DELETE,
  59. MaskBuilder::MASK_OPERATOR,
  60. MaskBuilder::MASK_MASTER,
  61. MaskBuilder::MASK_OWNER
  62. ),
  63. self::PERMISSION_UNDELETE => array(
  64. MaskBuilder::MASK_UNDELETE,
  65. MaskBuilder::MASK_OPERATOR,
  66. MaskBuilder::MASK_MASTER,
  67. MaskBuilder::MASK_OWNER
  68. ),
  69. self::PERMISSION_LIST => array(
  70. MaskBuilder::MASK_LIST,
  71. MaskBuilder::MASK_OPERATOR,
  72. MaskBuilder::MASK_MASTER,
  73. MaskBuilder::MASK_OWNER
  74. ),
  75. self::PERMISSION_OPERATOR => array(
  76. MaskBuilder::MASK_OPERATOR,
  77. MaskBuilder::MASK_MASTER,
  78. MaskBuilder::MASK_OWNER
  79. ),
  80. self::PERMISSION_MASTER => array(
  81. MaskBuilder::MASK_MASTER,
  82. MaskBuilder::MASK_OWNER,
  83. ),
  84. self::PERMISSION_OWNER => array(
  85. MaskBuilder::MASK_OWNER,
  86. ),
  87. );
  88. /**
  89. * {@inheritDoc}
  90. */
  91. public function getMasks($permission, $object)
  92. {
  93. if (!isset($this->map[$permission])) {
  94. return null;
  95. }
  96. return $this->map[$permission];
  97. }
  98. /**
  99. * {@inheritDoc}
  100. */
  101. public function contains($permission)
  102. {
  103. return isset($this->map[$permission]);
  104. }
  105. }