AdminPermissionMap.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. /*
  3. * This file is part of the Sonata Project package.
  4. *
  5. * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  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_EDIT,
  42. MaskBuilder::MASK_OPERATOR,
  43. MaskBuilder::MASK_MASTER,
  44. MaskBuilder::MASK_OWNER,
  45. ),
  46. self::PERMISSION_EDIT => array(
  47. MaskBuilder::MASK_EDIT,
  48. MaskBuilder::MASK_OPERATOR,
  49. MaskBuilder::MASK_MASTER,
  50. MaskBuilder::MASK_OWNER,
  51. ),
  52. self::PERMISSION_CREATE => array(
  53. MaskBuilder::MASK_CREATE,
  54. MaskBuilder::MASK_OPERATOR,
  55. MaskBuilder::MASK_MASTER,
  56. MaskBuilder::MASK_OWNER,
  57. ),
  58. self::PERMISSION_DELETE => array(
  59. MaskBuilder::MASK_DELETE,
  60. MaskBuilder::MASK_OPERATOR,
  61. MaskBuilder::MASK_MASTER,
  62. MaskBuilder::MASK_OWNER,
  63. ),
  64. self::PERMISSION_UNDELETE => array(
  65. MaskBuilder::MASK_UNDELETE,
  66. MaskBuilder::MASK_OPERATOR,
  67. MaskBuilder::MASK_MASTER,
  68. MaskBuilder::MASK_OWNER,
  69. ),
  70. self::PERMISSION_LIST => array(
  71. MaskBuilder::MASK_LIST,
  72. MaskBuilder::MASK_OPERATOR,
  73. MaskBuilder::MASK_MASTER,
  74. MaskBuilder::MASK_OWNER,
  75. ),
  76. self::PERMISSION_EXPORT => array(
  77. MaskBuilder::MASK_EXPORT,
  78. MaskBuilder::MASK_OPERATOR,
  79. MaskBuilder::MASK_MASTER,
  80. MaskBuilder::MASK_OWNER,
  81. ),
  82. self::PERMISSION_OPERATOR => array(
  83. MaskBuilder::MASK_OPERATOR,
  84. MaskBuilder::MASK_MASTER,
  85. MaskBuilder::MASK_OWNER,
  86. ),
  87. self::PERMISSION_MASTER => array(
  88. MaskBuilder::MASK_MASTER,
  89. MaskBuilder::MASK_OWNER,
  90. ),
  91. self::PERMISSION_OWNER => array(
  92. MaskBuilder::MASK_OWNER,
  93. ),
  94. );
  95. /**
  96. * {@inheritdoc}
  97. */
  98. public function getMasks($permission, $object)
  99. {
  100. if (!isset($this->map[$permission])) {
  101. return;
  102. }
  103. return $this->map[$permission];
  104. }
  105. /**
  106. * {@inheritdoc}
  107. */
  108. public function contains($permission)
  109. {
  110. return isset($this->map[$permission]);
  111. }
  112. }