@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.

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

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

Похожие вопросы