Loading private_message.links.contextual.yml 0 → 100644 +4 −0 Original line number Diff line number Diff line private_message.delete: route_name: entity.private_message.delete title: 'Delete' group: private_message private_message.links.task.yml +12 −0 Original line number Diff line number Diff line Loading @@ -7,3 +7,15 @@ private_message.private_message_thread_settings_tab: route_name: private_message.private_message_thread_settings title: Settings base_route: private_message.private_message_thread_settings private_message.view: route_name: entity.private_message.canonical title: 'View' base_route: entity.private_message.canonical class: '\Drupal\private_message\Plugin\Menu\PrivateMessageTab' private_message.delete: route_name: entity.private_message.delete title: 'Delete' base_route: entity.private_message.canonical class: '\Drupal\private_message\Plugin\Menu\PrivateMessageTab' private_message.permissions.yml +9 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,15 @@ administer private messages: description: 'Allows administrators to administer private messages' restrict access: true delete any private message: title: 'Delete any private message' description: 'Allows administrators to delete private messages' restrict access: TRUE delete own private message: title: 'Delete own private message' description: 'Allows users to delete their sent private messages' administer private message module: title: 'Administer private message module' description: 'Allows administrators to manage all parts of the One Page Private Message module' Loading private_message.routing.yml +12 −3 Original line number Diff line number Diff line Loading @@ -57,6 +57,15 @@ entity.private_message.canonical: _entity_access: 'private_message.view' _permission: 'use private messaging system,access user profiles' entity.private_message.delete: path: '/private-message/{private_message}/delete' defaults: _entity_form: 'private_message.delete' _title: 'Delete Private Message' requirements: private_message: \d+ _entity_access: 'private_message.delete' private_message.admin_structure: path: '/admin/structure/private-message' defaults: Loading src/Entity/Access/PrivateMessageAccessControlHandler.php +10 −6 Original line number Diff line number Diff line Loading @@ -74,19 +74,23 @@ class PrivateMessageAccessControlHandler extends EntityAccessControlHandler impl return AccessResult::allowed(); } if ($account->hasPermission('administer private messages')) { return AccessResult::allowed(); } break; case 'delete': if ($entity->getOwnerId() == $account->id()) { return AccessResult::allowed(); return AccessResult::allowedIfHasPermissions($account, [ 'delete own private message', 'delete any private message', ], 'OR'); } $private_message_thread = $this->privateMessageService->getThreadFromMessage($entity); if ($private_message_thread->isMember($account->id())) { return AccessResult::allowed(); } return AccessResult::allowedIfHasPermission($account, 'delete any private message'); break; } } Loading Loading
private_message.links.contextual.yml 0 → 100644 +4 −0 Original line number Diff line number Diff line private_message.delete: route_name: entity.private_message.delete title: 'Delete' group: private_message
private_message.links.task.yml +12 −0 Original line number Diff line number Diff line Loading @@ -7,3 +7,15 @@ private_message.private_message_thread_settings_tab: route_name: private_message.private_message_thread_settings title: Settings base_route: private_message.private_message_thread_settings private_message.view: route_name: entity.private_message.canonical title: 'View' base_route: entity.private_message.canonical class: '\Drupal\private_message\Plugin\Menu\PrivateMessageTab' private_message.delete: route_name: entity.private_message.delete title: 'Delete' base_route: entity.private_message.canonical class: '\Drupal\private_message\Plugin\Menu\PrivateMessageTab'
private_message.permissions.yml +9 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,15 @@ administer private messages: description: 'Allows administrators to administer private messages' restrict access: true delete any private message: title: 'Delete any private message' description: 'Allows administrators to delete private messages' restrict access: TRUE delete own private message: title: 'Delete own private message' description: 'Allows users to delete their sent private messages' administer private message module: title: 'Administer private message module' description: 'Allows administrators to manage all parts of the One Page Private Message module' Loading
private_message.routing.yml +12 −3 Original line number Diff line number Diff line Loading @@ -57,6 +57,15 @@ entity.private_message.canonical: _entity_access: 'private_message.view' _permission: 'use private messaging system,access user profiles' entity.private_message.delete: path: '/private-message/{private_message}/delete' defaults: _entity_form: 'private_message.delete' _title: 'Delete Private Message' requirements: private_message: \d+ _entity_access: 'private_message.delete' private_message.admin_structure: path: '/admin/structure/private-message' defaults: Loading
src/Entity/Access/PrivateMessageAccessControlHandler.php +10 −6 Original line number Diff line number Diff line Loading @@ -74,19 +74,23 @@ class PrivateMessageAccessControlHandler extends EntityAccessControlHandler impl return AccessResult::allowed(); } if ($account->hasPermission('administer private messages')) { return AccessResult::allowed(); } break; case 'delete': if ($entity->getOwnerId() == $account->id()) { return AccessResult::allowed(); return AccessResult::allowedIfHasPermissions($account, [ 'delete own private message', 'delete any private message', ], 'OR'); } $private_message_thread = $this->privateMessageService->getThreadFromMessage($entity); if ($private_message_thread->isMember($account->id())) { return AccessResult::allowed(); } return AccessResult::allowedIfHasPermission($account, 'delete any private message'); break; } } Loading