Google App Engine - узнайте, является ли пользователь администратором

В GAE, есть способ узнать, есть ли User является администратором?

Пока is_current_user_admin() показывает, является ли текущий пользователь администратором, я хотел бы знать, есть ли способ узнать, данный объект User предназначен для администратора или нет (например, гипотетическая функция User.is_admin()).

Спасибо, что прочитали.

Брайан

Ответ 1

К сожалению, модель User не содержит никакой информации о том, является ли пользователь администратором или нет.

Если ваш список администраторов изменяется редко, вы можете написать свою собственную функцию is_admin(), которая проверяет, имеет ли значение User.user_id() соответствует одной из учетных записей ваших администраторов. Например:

ADMIN_USER_IDS = ['id1', 'id2', ...]  # manually populated list
def is_admin(user):
    return user.user_id() in ADMIN_USER_IDS

Ответ 2

Это возможно, но не через объект User, и это похоже только на Java api, а не на python. Вам нужно использовать UserService:

UserService userService = UserServiceFactory.getUserService();
boolean adminUser = userService.isUserAdmin();

Ответ 3

Это невозможно.

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

Использование статуса администратора Google App Engine несколько ограничивает - например, что делать, если вы хотите создать новую группу пользователей с привилегиями, которые выше, чем обычно, но не так высоки, как администратор? Лучше не связывать привилегии в вашем приложении с привилегиями в Консоли администрирования.