【问题标题】:Flask admin roles adding roles_accapted to add_viewFlask 管理员角色将 roles_accapted 添加到 add_view
【发布时间】:2022-03-22 18:38:37
【问题描述】:

我已经设法让角色使用此代码,但是!

class Roled(object):
    def is_accessible(self):
        roles_accepted = getattr(self, 'roles_accepted', None)
        if flask_login.current_user.is_authenticated:
            user = CustomUser.objects.get(email=flask_login.current_user.id)
            for role in user.roles:
                for permission in role.permissions:
                    if permission == "admin":
                        return flask_login.current_user.is_authenticated

    def inaccessible_callback(self, name, **kwargs):
        # redirect to login page if user doesn't have access
        return redirect(url_for('login', next=request.url))


class AdminView(Roled, ModelView):
    def __init__(self, *args, **kwargs):
        self.roles_accepted = kwargs.pop('roles_accepted', list())
        super(AdminView, self).__init__(*args, **kwargs)


class TranslationView(Roled, ModelView):
    column_filters = ['eng']
    column_searchable_list = ('eng','geo', 'name')

现在我在添加flask 管理视图时向每个add_view 添加roles_accapted 时遇到问题,就像在question 中一样

【问题讨论】:

    标签: flask-admin flask-mongoengine


    【解决方案1】:

    您的TranslationView 应该继承自AdminView 类。即

    class TranslationView(AdminView):
        column_filters = ['eng']
        column_searchable_list = ('eng','geo', 'name')
    

    【讨论】:

    • 好的。我明白这一点,但如何将 roles_accepted 传递给 AdminView ?这不起作用admin.add_view(AdminUserView(model=User, session=db.session, category="Accounts", name="Users", endpoint="users_admin", roles_accepted=["admin"])) 可能是因为我没有从 AdminView 继承 TranslationView 吗?
    • @BeqaBukhradze - 被带去聊天。
    • 抱歉没收到?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2017-06-28
    • 2022-01-21
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    相关资源
    最近更新 更多