Задать вопрос
@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.

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

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽