You are here

function hook_webform_submission_access in Webform 6.x

Same name and namespace in other branches
  1. 8.5 webform.api.php \hook_webform_submission_access()
  2. 6.3 webform.api.php \hook_webform_submission_access()
  3. 7.4 webform.api.php \hook_webform_submission_access()
  4. 7.3 webform.api.php \hook_webform_submission_access()

Implements hook_webform_submission_access().

Implements *_any and *_own operations for a module.

3 functions implement hook_webform_submission_access()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

webform_access_webform_submission_access in modules/webform_access/webform_access.module
Implements hook_ENTITY_TYPE_access() for webform_submission entities.
webform_entity_print_webform_submission_access in modules/webform_entity_print/webform_entity_print.module
Implements hook_webform_submission_access().
webform_group_webform_submission_access in modules/webform_group/webform_group.module
Implements hook_ENTITY_TYPE_access() for webform_submission entities.

File

./webform.api.php, line 667
Hooks related to Webform module.

Code

function hook_webform_submission_access(\Drupal\webform\WebformSubmissionInterface $webform_submission, $operation, \Drupal\Core\Session\AccountInterface $account) {

  /** @var \Drupal\webform\WebformAccessRulesManagerInterface $access_rules_manager */
  $access_rules_manager = \Drupal::service('webform.access_rules_manager');

  // Add support for some module *_any and *_own access rules.
  $access_rules = \Drupal::moduleHandler()
    ->invoke('MY_MODULE', 'webform_access_rules');
  $access_any = isset($access_rules[$operation . '_any']) ? $access_rules_manager
    ->checkWebformSubmissionAccess($operation . '_any', $account, $webform_submission) : \Drupal\Core\Access\AccessResult::forbidden();
  $access_own = isset($access_rules[$operation . '_own']) && $webform_submission
    ->isOwner($account) ? $access_rules_manager
    ->checkWebformSubmissionAccess($operation . '_own', $account, $webform_submission) : \Drupal\Core\Access\AccessResult::forbidden();
  $access = $access_any
    ->orIf($access_own);
  if ($access
    ->isAllowed()) {
    return $access;
  }
  else {
    return \Drupal\Core\Access\AccessResult::neutral();
  }
}