annotate core/modules/node/src/NodePermissions.php @ 2:92f882872392

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