How can I restrict user access to view nodes based on field value?
You could use a programmatically solution using hook_node_access(), in this example the field_YOURFIELD is a checkbox.

/**
 * Implements hook_node_access().
 */
function MYMODULE_node_access(\Drupal\node\NodeInterface $node, $op, \Drupal\Core\Session\AccountInterface $account) {
  $access = new \Drupal\Core\Access\AccessResultNeutral();
  if ($node-&gt;hasField('field_YOURFIELD')) {
    $field = $node-&gt;get('field_YOURFIELD')-&gt;getString();
    if (empty($field) &amp;&amp; $account-&gt;id() != $node-&gt;getOwnerId()) {
      $access = new \Drupal\Core\Access\AccessResultForbidden();
    }
  }
  $access-&gt;addCacheableDependency($field);
  $access-&gt;addCacheableDependency($node);
  return $access;
}