From bcb00960763e9809f41a0b913e6c0c7da9ab2648 Mon Sep 17 00:00:00 2001 From: martinyde Date: Mon, 29 Nov 2021 15:44:41 +0100 Subject: [PATCH] LOOP-904: Added permission to view notify users checkbox --- .../user.role.os2loop_user_administrator.yml | 1 + ...e.os2loop_user_document_collection_editor.yml | 1 + .../os2loop_messages.permissions.yml | 4 ++++ .../os2loop_messages.services.yml | 1 + .../os2loop_messages/src/Helper/Helper.php | 16 +++++++++++++++- 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.permissions.yml diff --git a/config/sync/user.role.os2loop_user_administrator.yml b/config/sync/user.role.os2loop_user_administrator.yml index 18210138b..2dbacb525 100644 --- a/config/sync/user.role.os2loop_user_administrator.yml +++ b/config/sync/user.role.os2loop_user_administrator.yml @@ -165,6 +165,7 @@ permissions: - 'oauth authorize any consumers' - 'oauth register any consumers' - 'opt-in or out of tracking' + - 'os2loop see notify users option' - 'os2loop send alert' - 'publish any os2loop_documents_collection content' - 'publish any os2loop_documents_document content' diff --git a/config/sync/user.role.os2loop_user_document_collection_editor.yml b/config/sync/user.role.os2loop_user_document_collection_editor.yml index bddb8c300..d83f0746c 100644 --- a/config/sync/user.role.os2loop_user_document_collection_editor.yml +++ b/config/sync/user.role.os2loop_user_document_collection_editor.yml @@ -27,6 +27,7 @@ permissions: - 'edit own os2loop_documents_document content' - 'flag os2loop_upvote_correct_answer' - 'menu view unpublished' + - 'os2loop see notify users option' - 'os2loop send alert' - 'publish any os2loop_documents_collection content' - 'publish any os2loop_documents_document content' diff --git a/web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.permissions.yml b/web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.permissions.yml new file mode 100644 index 000000000..2241d1599 --- /dev/null +++ b/web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.permissions.yml @@ -0,0 +1,4 @@ +'os2loop see notify users option': + title: 'See notify users option' + description: 'Whether the user can see notify users option on content' + restrict access: TRUE diff --git a/web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.services.yml b/web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.services.yml index a023f84ea..f3b51eb23 100644 --- a/web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.services.yml +++ b/web/profiles/custom/os2loop/modules/os2loop_messages/os2loop_messages.services.yml @@ -3,3 +3,4 @@ services: class: Drupal\os2loop_messages\Helper\Helper arguments: - '@Drupal\os2loop_settings\Settings' + - '@current_user' diff --git a/web/profiles/custom/os2loop/modules/os2loop_messages/src/Helper/Helper.php b/web/profiles/custom/os2loop/modules/os2loop_messages/src/Helper/Helper.php index fce01e7d5..dd8991235 100644 --- a/web/profiles/custom/os2loop/modules/os2loop_messages/src/Helper/Helper.php +++ b/web/profiles/custom/os2loop/modules/os2loop_messages/src/Helper/Helper.php @@ -5,6 +5,7 @@ use Drupal\comment\CommentInterface; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Session\AccountProxyInterface; use Drupal\message\Entity\Message; use Drupal\node\NodeInterface; use Drupal\os2loop_settings\Settings; @@ -22,11 +23,19 @@ class Helper extends ControllerBase { */ protected $config; + /** + * The current user. + * + * @var \Drupal\Core\Session\AccountProxyInterface + */ + protected $currentUser; + /** * Constructor. */ - public function __construct(Settings $settings) { + public function __construct(Settings $settings, AccountProxyInterface $currentUser) { $this->config = $settings->getConfig('os2loop_subscriptions.settings'); + $this->currentUser = $currentUser; } /** @@ -144,6 +153,11 @@ public function formAlter(array &$form, string $form_id) { if ($nodeSubscriptions[$contentType] !== $contentType) { $form['os2loop_notify_users']['#access'] = FALSE; } + + // Hide field if user does not have permission to see it. + if (!$this->currentUser->hasPermission('os2loop see notify users option')) { + $form['os2loop_notify_users']['widget']['value']['#access'] = FALSE; + } } } }