Fix the logic related to the status field (#1125)

This commit is contained in:
Wu Clan
2026-03-24 11:43:09 +08:00
committed by GitHub
parent c98ea57a94
commit 94f643c587
5 changed files with 14 additions and 7 deletions
+4 -1
View File
@@ -25,6 +25,7 @@ from backend.app.admin.schema.user import (
UpdateUserParam,
)
from backend.app.admin.utils.password_security import get_hash_password
from backend.common.enums import StatusType
from backend.common.exception import errors
from backend.plugin.core import check_plugin_installed
from backend.utils.serializers import select_join_serialize
@@ -146,9 +147,11 @@ class CRUDUser(CRUDPlus[User]):
db.add(new_user)
await db.flush()
role_stmt = select(Role)
role_stmt = select(Role).where(Role.status == StatusType.enable)
result = await db.execute(role_stmt)
role = result.scalars().first() # 默认绑定第一个角色
if role is None:
raise errors.NotFoundError(msg='未找到可用角色,请联系系统管理员')
user_role_stmt = insert(user_role).values(AddUserRoleParam(user_id=new_user.id, role_id=role.id).model_dump())
await db.execute(user_role_stmt)
+4 -4
View File
@@ -12,7 +12,7 @@ from backend.app.admin.service.login_log_service import login_log_service
from backend.app.admin.service.user_password_history_service import password_security_service
from backend.app.admin.utils.password_security import password_verify
from backend.common.context import ctx
from backend.common.enums import LoginLogStatusType
from backend.common.enums import LoginLogStatusType, StatusType
from backend.common.exception import errors
from backend.common.i18n import t
from backend.common.log import log
@@ -186,14 +186,14 @@ class AuthService:
if request.user.is_superuser:
menus = await menu_dao.get_all(db, None, None)
for menu in menus:
if menu.perms:
if menu.status == StatusType.enable and menu.perms:
codes.update(menu.perms.split(','))
else:
roles = request.user.roles
roles = [role for role in request.user.roles if role.status == StatusType.enable]
if roles:
for role in roles:
for menu in role.menus:
if menu.perms:
if menu.status == StatusType.enable and menu.perms:
codes.update(menu.perms.split(','))
return list(codes)
+2 -1
View File
@@ -7,6 +7,7 @@ from backend.app.admin.crud.crud_menu import menu_dao
from backend.app.admin.model import Menu
from backend.app.admin.schema.menu import CreateMenuParam, UpdateMenuParam
from backend.app.admin.utils.cache import user_cache_manager
from backend.common.enums import StatusType
from backend.common.exception import errors
from backend.utils.build_tree import get_tree_data, get_vben5_tree_data
@@ -57,7 +58,7 @@ class MenuService:
if request.user.is_superuser:
menu_data = await menu_dao.get_sidebar(db, None)
else:
roles = request.user.roles
roles = [role for role in request.user.roles if role.status == StatusType.enable]
menu_ids = set()
if roles:
for role in roles:
+2 -1
View File
@@ -85,8 +85,9 @@ def filter_data_permission( # noqa: C901
if scope.status:
data_rules.update(rule for rule in scope.rules if rule is not None)
# 启用数据权限过滤,但没有已启用的数据权限
if not data_rules:
return or_(1 == 1)
return or_(1 != 1)
# 目标模型
target_model_map = (
@@ -4,6 +4,7 @@ from sqlalchemy import Select, and_
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy_crud_plus import CRUDPlus
from backend.common.enums import StatusType
from backend.plugin.dict.model import DictData
from backend.plugin.dict.schema.dict_data import CreateDictDataParam, UpdateDictDataParam
@@ -34,6 +35,7 @@ class CRUDDictData(CRUDPlus[DictData]):
sort_columns='sort',
sort_orders='desc',
type_code=type_code,
status=StatusType.enable,
)
async def get_all(self, db: AsyncSession) -> Sequence[DictData]: