Пользовательские претензии Cloud Firestore, когда NULL - PullRequest
0 голосов
/ 21 марта 2019

Я блокирую пользователей, добавляя к их токену облачные функции

exports.blockUser = functions.https.onCall(async(data, context) => {

const user = await admin.auth().getUserByEmail(data['email']);

if(context.auth.token.admin){
    admin.auth().setCustomUserClaims(user.uid, {
        block: true
    });
    console.log(data['email'] + " has been blocked");
    return 1;
}else{

    return 2;

}});

В моих правилах я установил разрешение на чтение, если блок == ноль, потому что пользователи, которые не заблокированы, не будут иметь эти данныена их токене.

allow read: if request.auth.token.block == null;

Однако это не работает, и в разрешении отказано.

Я пробовал наоборот, только чтобы убедиться, что данные токена существуют

allow read: if request.auth.token.block == true;

Это позволило только пользователям блокировать возможность чтения данных.и это работает.что означает, что с данными на токене нет проблем.

Что можно сделать, чтобы пользователи, у которых на свой токене не было свойства block, могли читать данные?

1 Ответ

0 голосов
/ 21 марта 2019

В правилах безопасности отсутствующее свойство не совпадает со свойством, равным нулю.Вместо этого вам следует проверить, действительно ли свойство блока существует, а также проверить, должно ли его значение ограничивать доступ

allow read: if !("block" in request.auth.token) || equest.auth.token.block == false;

См. Документацию для Карта (request.auth.token является картой).

...