Я хочу реализовать «более сложный» фильтр на основе прав доступа пользователя в Python eve restframework.
Проблема
У нас есть аутентификация по токену, учетная запись пользователя извлекается в классе TokenAuth
. У пользователя есть несколько контрактов, в каждом контракте есть счета. Я хочу реализовать конечную точку / счета, которая показывает счета его контракта. Мы используем mongodb
.
Для лучшего понимания, что-то вроде инструкции SQL "SELECT * FROM bills WHERE bills.contract IN user.contracts"
user { contracts : ["a","b","c"] }
bills { contract: "a" }
Исходная информация
class TokenAuth(TokenAuthBase):
def check_auth(self, token, allowed_roles, resource, method):
users = app.data.driver.db['users']
TokenAuth.account = users.find_one(lookup)
...
(Обновить)
Доступ к ресурсам с ограничениями для пользователей¶ (URRA)
В случае отношения пользователь 1: n счет, URRA выполнит эту работу. См. URRA в документации по python eve.
В более сложном случае необходимо написать собственный фильтр-запрос. Мне нужен такой вариант :).
Обновлять
Я нашел решение, см. Обновленный ответ.