С помощью вышеуказанного правила, которое вы объявили, вы проверяете флаг по данным, которые присутствуют в облачном хранилище, а не по данным запроса пользователя.
Кроме того, вы пытаетесь прочитать то же самое снова документ из пожарного хранилища, так как это будет стоить вам 1 операцию чтения во время удаления документа. Вышеуказанный метод следует использовать только в том случае, если вы хотите проверить данные из другого документа
Правила безопасности имеют доступ к новым данным (запрос пользователя) и данным, присутствующим в облаке
//checking flag from user requested data
request.resource.data.isActive
//checking flag from data present in document in cloud firestore
resource.data.isActive
Используйте следующее правило для разрешить удаление, если запрашиваемые пользователем данные isActive имеет значение false
match /categories/{document=**} {
allow delete: if request.resource.data.isActive == false;
}
и следовать правилу, чтобы разрешить удаление, если isActive флаг из данных, представленных в документе, равен false
match /categories/{document=**} {
allow delete: if resource.data.isActive == false;
}