--- /dev/null
+/**
+ * Implements hook_node_access_records_alter().
+ */
+function {{ machine_name }}_node_access_records_alter(&$grants, Drupal\node\NodeInterface $node) {
+ // Our module allows editors to mark specific articles with the 'is_preview'
+ // field. If the node being saved has a TRUE value for that field, then only
+ // our grants are retained, and other grants are removed. Doing so ensures
+ // that our rules are enforced no matter what priority other grants are given.
+ if ($node->is_preview) {
+ // Our module grants are set in $grants['example'].
+ $temp = $grants['example'];
+ // Now remove all module grants but our own.
+ $grants = ['example' => $temp];
+ }
+}