Кажется, вы столкнулись с известной проблемой в API доступа к узлам Drupal 6. Гранты работают только как одобрение, поэтому, если какой-либо модуль доступа говорит, что пользователь может выполнить действие, никакой другой модуль не может его отменить. Единственное другое решение, которое я могу придумать, - это объединение модулей для расчета на основе обоих критериев, что, очевидно, является потенциально сложной задачей.
Конечно, не рекомендуется, но вы можете применить собственную логику для сканирования таблиц грантов, чтобы удалить записи для пользователей, которые не соответствуют обоим критериям. Вам нужно будет найти правильный крюк, чтобы он выполнял свою работу после того, как оба других модуля вычислили свои значения и сохранили их в базе данных.
Хорошие новости: это исправлено в D7. Плохая новость: D7 будет какое-то время.
Drupal 7 позволит модулям одобрять, отклонять или воздерживаться от решений о доступе к узлу. Таким образом, ваш модуль таксономии может сказать, что пользователи одобрены для этих условий, а для других - нет. Кроме того, рабочий процесс может одобрить для некоторых этапов и отклонить для других. Пользователю потребуется как минимум одно одобрение и никаких отказов.