diff --git a/inventory-backend/app/api/v1/permission.py b/inventory-backend/app/api/v1/permission.py index 5c8e410..e258d35 100644 --- a/inventory-backend/app/api/v1/permission.py +++ b/inventory-backend/app/api/v1/permission.py @@ -79,6 +79,14 @@ def assign_perms(): role_code = data.get('role_code') permissions = data.get('permissions', []) + # ★ 防自锁:操作者修改自己角色时,强制保留权限管理的关键权限 + claims = get_jwt() + operator_role = claims.get('role', '') + if operator_role and operator_role.upper() == role_code.upper(): + for required in ('system_permission', 'system_permission:operation'): + if required not in permissions: + permissions.append(required) + company_name = _get_operator_company() PermissionService.assign_permissions(role_code, permissions, company_name=company_name) return jsonify({'code': 200, 'msg': '保存成功'}), 200