Разрешения ролей Flask SecurityPython

Программы на Python
Anonymous
Разрешения ролей Flask Security

Сообщение Anonymous »

Flask Security предлагает систему ролей, пользователю может быть назначена одна или несколько ролей. Подобно входу в систему с помощью @login_requiered, существует @roles_required('Admin').
В 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...
Я попробовал просто добавить параметр разрешения с целым числом (в примере с 1 это сработало). Но идея состоит в том (если я правильно понял документацию) хранить там список (тип данных), который, конечно, не работает в таком виде в (maria)DB.

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-of-roles

Вернуться в «Python»