我在弄清楚如何向导航项添加自定义权限时遇到了麻烦,因此某些项将在用户登录/注销或满足其他参数时显示(例如,用户属于某些组织)。
任何帮助或示例将不胜感激。
答案 0 :(得分:0)
使用flask_security
软件包,您可以为用户设置角色,并在flask_admin
视图中对其进行检查,如下所示:
from http import HTTPStatus
from flask_admin.contrib.sqla import ModelView
from flask_security import current_user, url_for_security
from flask import abort, redirect, request
class AdminSecurityMixin:
allowed_roles = []
def is_accessible(self):
return current_user.is_active and current_user.is_authenticated and \
(current_user.has_role('admin') or any(current_user.has_role(r) for r in self.allowed_roles))
def _handle_view(self, name, **kwargs):
if not self.is_accessible():
# if user is logged in, but can't view the admin, reject access
if current_user.is_authenticated:
abort(HTTPStatus.FORBIDDEN)
# otherwise redirect to the admin login view
# the next parameter is so we can redirect them after they'ved
# logged in to where they wanted to go originally
return redirect(url_for_security('login', next=request.url))
return None
class SecuredModelView(AdminSecurityMixin, ModelView):
allowed_roles = ['custom_role']
现在,在SecuredModelView
中注册的模型只有在登录后并已分配custom_role
或admin
角色的用户才能在管理面板中访问。
可以使用以下命令创建角色并将其添加到现有用户:
$ flask roles create custom_role
$ flask roles add <your user email> custom_role
答案 1 :(得分:-1)
我想您已经有一个至少包含一个用户表的数据库。
我认为您只想设计模板。
我邀请您关注有关模板的Flask tutorial。它将为您介绍模板语言useEffect(() => {
if (authData.isInitializing || authData.user === null) return;
const ref = firebase.db.doc("/env/" + process.env.REACT_APP_FIRESTORE_ENVIRONMENT + "/users/" + authData.user.uid);
return ref.onSnapshot(doc => {
setAuthData({ ...authData, userinfo: doc.data() });
});
}, []);
。