@ionin_code

Как в Flask-Admin реализовать права для добавления пользователей с определенной ролью?

Я использую Flask-Admin и Flask-Security чтобы реализовать админку для моего Python приложения. Вот модели для Role и User соответственно:
class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    def __str__(self):
        return self.name


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(255), unique=True, index=True)
    password = db.Column(db.String(255))
    roles = db.relationship('Role', secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'))

    def __str__(self):
        return self.username

Я сделал sqla.ModelView User'а доступной только пользователям с ролями "admin" и "superadmin", и теперь пользователи с этими ролями могут добавлять/редактировать/изменять новых пользователей. Как мне сделать, чтобы только пользователи с ролью "superadmin" могли создавать пользователей с ролями "superadmin" и "admin" (т. е. суперадмины могут создавать всех, а админы - всех, кроме админов и суперадминов)? Иначе говоря, Я хочу специфицировать, какие из этих вариантов будут доступны пользователям с разными ролями: https://imgur.com/a/GdhUS2Y.

И гуглил, и читал доки, не смог найти ничего по этой проблеме :(
  • Вопрос задан
  • 1134 просмотра
Пригласить эксперта
Ответы на вопрос 2
igorzakhar
@igorzakhar
Может быть тебе поможет книга "Разработка веб-приложений с использованием Flask на языке Python" (Мигель Гринберг). Глава 9 - "Роли пользователей". Книга в pdf есть в сети.
Ответ написан
@pcdesign
Это можно разруливать с помощью def on_model_change(self, form, model, is_created=True):
И дальше проверять роль, если суперпуперадмин, то разрешаем создать админа, если обычный админ, то футболим.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы