AdminPermissionMap.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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_EXPORT = 'EXPORT';
  28. const PERMISSION_OPERATOR = 'OPERATOR';
  29. const PERMISSION_MASTER = 'MASTER';
  30. const PERMISSION_OWNER = 'OWNER';
  31. /**
  32. * Map each permission to the permissions it should grant access for
  33. * fe. grant access for the view permission if the user has the edit permission
  34. *
  35. * @var array
  36. */
  37. private $map = array(
  38. self::PERMISSION_VIEW => array(
  39. MaskBuilder::MASK_VIEW,
  40. MaskBuilder::MASK_LIST,
  41. MaskBuilder::MASK_EXPORT,
  42. MaskBuilder::MASK_EDIT,
  43. MaskBuilder::MASK_OPERATOR,
  44. MaskBuilder::MASK_MASTER,
  45. MaskBuilder::MASK_OWNER
  46. ),
  47. self::PERMISSION_EDIT => array(
  48. MaskBuilder::MASK_EDIT,
  49. MaskBuilder::MASK_OPERATOR,
  50. MaskBuilder::MASK_MASTER,
  51. MaskBuilder::MASK_OWNER
  52. ),
  53. self::PERMISSION_CREATE => array(
  54. MaskBuilder::MASK_CREATE,
  55. MaskBuilder::MASK_OPERATOR,
  56. MaskBuilder::MASK_MASTER,
  57. MaskBuilder::MASK_OWNER
  58. ),
  59. self::PERMISSION_DELETE => array(
  60. MaskBuilder::MASK_DELETE,
  61. MaskBuilder::MASK_OPERATOR,
  62. MaskBuilder::MASK_MASTER,
  63. MaskBuilder::MASK_OWNER
  64. ),
  65. self::PERMISSION_UNDELETE => array(
  66. MaskBuilder::MASK_UNDELETE,
  67. MaskBuilder::MASK_OPERATOR,
  68. MaskBuilder::MASK_MASTER,
  69. MaskBuilder::MASK_OWNER
  70. ),
  71. self::PERMISSION_LIST => array(
  72. MaskBuilder::MASK_LIST,
  73. MaskBuilder::MASK_EXPORT,
  74. MaskBuilder::MASK_OPERATOR,
  75. MaskBuilder::MASK_MASTER,
  76. MaskBuilder::MASK_OWNER
  77. ),
  78. self::PERMISSION_EXPORT => array(
  79. MaskBuilder::MASK_EXPORT,
  80. MaskBuilder::MASK_OPERATOR,
  81. MaskBuilder::MASK_MASTER,
  82. MaskBuilder::MASK_OWNER
  83. ),
  84. self::PERMISSION_OPERATOR => array(
  85. MaskBuilder::MASK_OPERATOR,
  86. MaskBuilder::MASK_MASTER,
  87. MaskBuilder::MASK_OWNER
  88. ),
  89. self::PERMISSION_MASTER => array(
  90. MaskBuilder::MASK_MASTER,
  91. MaskBuilder::MASK_OWNER,
  92. ),
  93. self::PERMISSION_OWNER => array(
  94. MaskBuilder::MASK_OWNER,
  95. ),
  96. );
  97. /**
  98. * {@inheritDoc}
  99. */
  100. public function getMasks($permission, $object)
  101. {
  102. if (!isset($this->map[$permission])) {
  103. return null;
  104. }
  105. return $this->map[$permission];
  106. }
  107. /**
  108. * {@inheritDoc}
  109. */
  110. public function contains($permission)
  111. {
  112. return isset($this->map[$permission]);
  113. }
  114. }