Skip to content

Commit

Permalink
Fix edit permissions for transactional emails config entity
Browse files Browse the repository at this point in the history
  • Loading branch information
simonbaese committed Jun 21, 2022
1 parent 86b09ba commit 94711bb
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions web/modules/mailer/src/Entity/TransactionalEmail.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
* plural = "@count transactional emails",
* ),
* handlers = {
* "access" = "Drupal\mailer\TransactionalEmailAccessControlHandler",
* "list_builder" = "Drupal\mailer\TransactionalEmailListBuilder",
* "form" = {
* "add" = "Drupal\mailer\Form\TransactionalEmailForm",
Expand Down
37 changes: 37 additions & 0 deletions web/modules/mailer/src/TransactionalEmailAccessControlHandler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace Drupal\mailer;

use Drupal\Core\Access\AccessException;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Access\AccessResultNeutral;
use Drupal\Core\Entity\EntityAccessControlHandler;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Session\AccountInterface;

/**
* Access handler for transactional email config entities.
*/
class TransactionalEmailAccessControlHandler extends EntityAccessControlHandler {

/**
* {@inheritdoc}
*/
public function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {

if (!$entity instanceof TransactionalEmailInterface) {
throw new AccessException('The TransactionalEmailAccessControlHandler was called by an entity that is not a TransactionalEmail.');
}

if ($account->hasPermission($entity->getEntityType()->getAdminPermission())) {
return AccessResult::allowed()->cachePerUser();
}

if ($operation == 'update' || $operation == 'edit') {
return AccessResult::allowedIf($account->hasPermission('edit transactional emails'));
}

return new AccessResultNeutral();
}

}

0 comments on commit 94711bb

Please sign in to comment.