Правила доступа к базе данных Firebase по ключу данных - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть данные базы данных Firebase следующего типа:

{ sales: 
    { -Axyz: {shop_id: 1, name: item1},
      -BqwW: {shop_id: 2, name: item2},
      -Cwer: {shop_id: 1, name: item3}
    }
}

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

У меня есть следующие правила базы данных - пользователи администратора имеют доступ ко всем записям, а пользователи магазина имеют доступ ких собственные записи:

{
"rules": {
    "sales": {
        ".read": "auth.token.admin === true"
        "$key": {
            ".read": "auth.token.shop === true && data.child('shop_id').val() === auth.token.shop_id"
        }
    } 
} }

В идеале я хотел бы запросить / sales / table и получить список соответствующих записей - все записи для пользователей-администраторов и некоторые для пользователей магазинов.

        firebase.database().ref('sales').on('value', ....

Возможно ли реализовать таким образом?

Спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Спасибо за обсуждение в комментариях, теперь оно работает для меня.

Я использовал правила на основе запросов, описанные в https://firebase.google.com/docs/database/security/securing-data#query-based_rules

firebase.database().ref('sales') 
    .orderByChild('shop_id').equalTo(user.claims.shop_id) 
    .on('value' ...

, возвращает только список значенийчто этот пользователь разрешил видеть

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