Во-первых, вы не сможете помешать кому-либо, имеющему доступ к базе данных, или пользователю root просматривать данные (по крайней мере, без шифрования).
С точки зрения нормальной работы сайта это не так.не слишком сложно сделать.Два крючка, которые вам нужно вызвать: hook_node_grants () и hook_node_access_records () , есть довольно хороший пример, который также в значительной степени делает то, что вы хотите в вопросе, здесь .
Проще говоря, hook_node_access_records () возвращает структуру, детализирующую relms и id, которые могут выполнять над ней действия, а hook_node_grants () возвращает relms и id для пользователя.Если между ними есть совпадение, то доступ (чтение или запись) предоставляется.
Это дает вам большую гибкость.Одним из примеров может быть то, что люди могут читать только узлы, созданные другими людьми с одним и тем же знаком звезды.В hook_node_grants вы должны проверить пользовательский объект, чтобы получить звездочку и вернуть $grants['starsign'] = 2
Когда узел сохранен, hook_node_access_records должен проверить знак звезды пользователя, который его создал, сделать что-то вроде:
$grants = array();
$grants[] = array(
'realm' => 'starsign',
'gid' => $account->starsign,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
'priority' => 0,
);
return $grants
Таким образом, если relm и идентификатор группы совпадают, пользователю будет предоставлен доступ для чтения.