Аутентификация для групп пользователей с разными разрешениями в Servant
Я хотел бы реализовать систему разрешений для моего API, в которой конечные точки, доступные администраторам, представляют собой расширенный набор тех, которые доступны суперпользователям, которые являются расширенным набором точек доступа для обычных пользователей. Что такое элегантный способ сделать это в Servant?
Должен ли я использовать несколько комбинаторов AuthProtect, каждый из которых возвращает пользователя, но только если уровень привилегий аутентифицированного пользователя достаточно высок? Кажется, что это, возможно, потребовало бы написания в основном идентичного кода каждый раз, так что, возможно, это не идеально, особенно если есть много групп. Есть ли способ лучше?