mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 21:15:13 +00:00
Fix the logic related to the status field (#1125)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user