超级管理员登录设置
This commit is contained in:
23
inventory-backend/app/utils/constants.py
Normal file
23
inventory-backend/app/utils/constants.py
Normal file
@ -0,0 +1,23 @@
|
||||
# app/utils/constants.py
|
||||
|
||||
class UserRole:
|
||||
SUPER_ADMIN = 'super_admin' # 超级管理员 (IRIS)
|
||||
SUPERVISOR = 'supervisor' # 主管
|
||||
FINANCE = 'finance' # 财务
|
||||
WAREHOUSE_MGR = 'warehouse_manager' # 库管
|
||||
INBOUND = 'inbound' # 入库员
|
||||
OUTBOUND = 'outbound' # 出库员
|
||||
PURCHASER = 'purchaser' # 采购员
|
||||
SALES = 'sales' # 销售
|
||||
|
||||
# 角色中文映射(用于前端展示或日志)
|
||||
ROLE_MAP = {
|
||||
SUPER_ADMIN: '超级管理员',
|
||||
SUPERVISOR: '主管',
|
||||
FINANCE: '财务',
|
||||
WAREHOUSE_MGR: '库管',
|
||||
INBOUND: '入库员',
|
||||
OUTBOUND: '出库员',
|
||||
PURCHASER: '采购员',
|
||||
SALES: '销售'
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
# app/utils/decorators.py
|
||||
from functools import wraps
|
||||
from flask_jwt_extended import get_jwt
|
||||
from flask import jsonify
|
||||
|
||||
|
||||
def role_required(*roles):
|
||||
"""
|
||||
自定义装饰器:检查用户角色
|
||||
使用方法: @role_required('super_admin', 'finance')
|
||||
"""
|
||||
|
||||
def wrapper(fn):
|
||||
@wraps(fn)
|
||||
def decorator(*args, **kwargs):
|
||||
claims = get_jwt()
|
||||
user_role = claims.get('role')
|
||||
|
||||
# 如果是超级管理员,拥有上帝视角,直接放行 (可选)
|
||||
if user_role == 'super_admin':
|
||||
return fn(*args, **kwargs)
|
||||
|
||||
if user_role not in roles:
|
||||
return jsonify(msg='权限不足:您没有访问此资源的权限'), 403
|
||||
|
||||
return fn(*args, **kwargs)
|
||||
|
||||
return decorator
|
||||
|
||||
return wrapper
|
||||
Reference in New Issue
Block a user