В Flask Security также есть разрешения.
Насколько я понимаю, я могу назначать разные разрешения для ролей, и если пользователь с определенной ролью войдет в систему позже, я могу использовать @permissions_required('permissionXYZ'), чтобы проверить, имеет ли этот пользователь необходимое разрешение.
Мне удалось для создания ролей и пользователей, а также проверки наличия у пользователя роли. Никак не могу получить всю часть с разрешениями на работу. Точнее, я получаю только систему разрешений, работающую со значением Intger. Что мне нужно сделать, чтобы добавить разрешения для роли?
Я не могу где-то найти пример этой ролевой системы разрешений, и документация для меня не совсем понятна (https:// flask-security-too.readthedocs.io/en/stable/api.html#flask_security.permissions_required)
Код: Выделить всё
class User(db.Model, UserMixin):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
username = Column(String(64), index=True, unique=True, nullable=False)
password_hash = Column(String(256))
email = Column(String(80), index=True, unique=True, nullable=False)
roles = db.relationship('Role', secondary=roles_users, backref='roled')
fs_uniquifier = Column(String(255), unique=True,
nullable=False, default=lambda: str(uuid.uuid4()))
class Role(db.Model, RoleMixin):
__tablename__ = 'role'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
permissions = db.Column(db.String(80), default='')
Код: Выделить всё
admin_role = user_datastore.create_role(name="admin", permissions=1)
user = User(username=os.getenv('ADMIN_USERNAME'), email=os.getenv('ADMIN_EMAIL'))
password = os.getenv('ADMIN_PASSWORD')
if user and password:
user.set_password(password)
security.datastore.add_role_to_user(user, admin_role)
Код: Выделить всё
@permissions_required('1')
def exmaple():
stuff...
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-of-roles