function permissions_by_term_node_access_records in Permissions by Term 8.2
Same name and namespace in other branches
- 8 permissions_by_term.module \permissions_by_term_node_access_records()
Implements hook_node_access_records().
Permissions can be rebuild at /admin/reports/status/rebuild.
1 call to permissions_by_term_node_access_records()
- PermissionModeTest::testNodeAccessRecordCreation in tests/
src/ Kernel/ PermissionModeTest.php
File
- ./
permissions_by_term.module, line 414 - Allows access to terms in a vocabulary to be limited by user or role.
Code
function permissions_by_term_node_access_records(NodeInterface $node) {
/**
* @var AccessCheck $accessCheckService
*/
$accessCheckService = \Drupal::service('permissions_by_term.access_check');
// Do not return any grants for nodes that this module doesn't manage.
if (\Drupal::configFactory()
->getEditable('permissions_by_term.settings')
->get('disable_node_access_records')) {
return NULL;
}
if (!$accessCheckService
->isAnyTaxonomyTermFieldDefinedInNodeType($node
->getType())) {
return NULL;
}
/**
* @var \Drupal\permissions_by_term\Service\TermHandler $termHandler
*/
$termHandler = \Drupal::service('permissions_by_term.term_handler');
if (!\Drupal::config('permissions_by_term.settings')
->get('permission_mode') && empty($termHandler
->getTidsByNid($node
->id(), $node))) {
return NULL;
}
$isAnyPermissionSetForTerm = FALSE;
$tids = $termHandler
->getTidsByNid($node
->id());
if (!empty($tids)) {
foreach ($tids as $tid) {
/* @var \Drupal\permissions_by_term\Service\AccessCheck $access_check_service */
$access_check_service = \Drupal::service('permissions_by_term.access_check');
if ($node
->language()
->getId() == 'und') {
// Current system default language
$language = \Drupal::languageManager()
->getCurrentLanguage()
->getId();
}
else {
$language = $node
->language()
->getId();
}
if ($access_check_service
->isAnyPermissionSetForTerm($tid, $language)) {
$isAnyPermissionSetForTerm = TRUE;
break;
}
}
}
if (!$isAnyPermissionSetForTerm && !\Drupal::config('permissions_by_term.settings')
->get('permission_mode')) {
return null;
}
/**
* @var \Drupal\permissions_by_term\Service\NodeAccess $nodeAccess
*/
$nodeAccess = \Drupal::service('permissions_by_term.node_access');
$grantObject = $nodeAccess
->createGrant($node
->id(), $node
->id());
$grants[] = [
'realm' => $grantObject->realm,
'gid' => $grantObject->gid,
'grant_view' => $grantObject->grant_view,
'grant_update' => $grantObject->grant_update,
'grant_delete' => $grantObject->grant_delete,
'nid' => $node
->id(),
];
return $grants;
}