annotate core/modules/node/src/NodePermissions.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\node;
Chris@0 4
Chris@0 5 use Drupal\Core\StringTranslation\StringTranslationTrait;
Chris@0 6 use Drupal\node\Entity\NodeType;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Provides dynamic permissions for nodes of different types.
Chris@0 10 */
Chris@0 11 class NodePermissions {
Chris@0 12
Chris@0 13 use StringTranslationTrait;
Chris@0 14
Chris@0 15 /**
Chris@0 16 * Returns an array of node type permissions.
Chris@0 17 *
Chris@0 18 * @return array
Chris@0 19 * The node type permissions.
Chris@0 20 * @see \Drupal\user\PermissionHandlerInterface::getPermissions()
Chris@0 21 */
Chris@0 22 public function nodeTypePermissions() {
Chris@0 23 $perms = [];
Chris@0 24 // Generate node permissions for all node types.
Chris@0 25 foreach (NodeType::loadMultiple() as $type) {
Chris@0 26 $perms += $this->buildPermissions($type);
Chris@0 27 }
Chris@0 28
Chris@0 29 return $perms;
Chris@0 30 }
Chris@0 31
Chris@0 32 /**
Chris@0 33 * Returns a list of node permissions for a given node type.
Chris@0 34 *
Chris@0 35 * @param \Drupal\node\Entity\NodeType $type
Chris@0 36 * The node type.
Chris@0 37 *
Chris@0 38 * @return array
Chris@0 39 * An associative array of permission names and descriptions.
Chris@0 40 */
Chris@0 41 protected function buildPermissions(NodeType $type) {
Chris@0 42 $type_id = $type->id();
Chris@0 43 $type_params = ['%type_name' => $type->label()];
Chris@0 44
Chris@0 45 return [
Chris@0 46 "create $type_id content" => [
Chris@0 47 'title' => $this->t('%type_name: Create new content', $type_params),
Chris@0 48 ],
Chris@0 49 "edit own $type_id content" => [
Chris@0 50 'title' => $this->t('%type_name: Edit own content', $type_params),
Chris@0 51 ],
Chris@0 52 "edit any $type_id content" => [
Chris@0 53 'title' => $this->t('%type_name: Edit any content', $type_params),
Chris@0 54 ],
Chris@0 55 "delete own $type_id content" => [
Chris@0 56 'title' => $this->t('%type_name: Delete own content', $type_params),
Chris@0 57 ],
Chris@0 58 "delete any $type_id content" => [
Chris@0 59 'title' => $this->t('%type_name: Delete any content', $type_params),
Chris@0 60 ],
Chris@0 61 "view $type_id revisions" => [
Chris@0 62 'title' => $this->t('%type_name: View revisions', $type_params),
Chris@0 63 'description' => t('To view a revision, you also need permission to view the content item.'),
Chris@0 64 ],
Chris@0 65 "revert $type_id revisions" => [
Chris@0 66 'title' => $this->t('%type_name: Revert revisions', $type_params),
Chris@0 67 'description' => t('To revert a revision, you also need permission to edit the content item.'),
Chris@0 68 ],
Chris@0 69 "delete $type_id revisions" => [
Chris@0 70 'title' => $this->t('%type_name: Delete revisions', $type_params),
Chris@0 71 'description' => $this->t('To delete a revision, you also need permission to delete the content item.'),
Chris@0 72 ],
Chris@0 73 ];
Chris@0 74 }
Chris@0 75
Chris@0 76 }