fix: 修正角色权限分配异常问题
This commit is contained in:
@@ -14,7 +14,7 @@ from annotation.auth import Auth, hasAdmin
|
||||
from annotation.log import Log
|
||||
from config.constant import BusinessType, RedisKeyConfig
|
||||
from controller.login import LoginController
|
||||
from models import Permission
|
||||
from models import Permission,RolePermission
|
||||
from schemas.common import BaseResponse
|
||||
from schemas.permission import AddPermissionParams, GetPermissionInfoResponse, GetPermissionListResponse
|
||||
from utils.response import Response
|
||||
@@ -73,8 +73,8 @@ async def add_permission(request: Request, params: AddPermissionParams):
|
||||
@Auth(permission_list=["permission:btn:delete"])
|
||||
async def delete_permission(request: Request, id: str = Path(description="权限ID")):
|
||||
if permission := await Permission.get_or_none(id=id, del_flag=1):
|
||||
permission.del_flag = 0
|
||||
await permission.save()
|
||||
# 移除角色权限
|
||||
await delete_permission_recursive(permission_id=permission.id)
|
||||
# 更新用户信息缓存
|
||||
userInfos = await request.app.state.redis.keys(f'{RedisKeyConfig.USER_INFO.key}*')
|
||||
if userInfos:
|
||||
@@ -88,6 +88,19 @@ async def delete_permission(request: Request, id: str = Path(description="权限
|
||||
return Response.error(msg="删除权限失败,权限不存在!")
|
||||
|
||||
|
||||
async def delete_permission_recursive(permission_id: str):
|
||||
"""
|
||||
递归删除权限及其附属权限
|
||||
:param permission_id: 权限ID
|
||||
:return:
|
||||
"""
|
||||
await Permission.filter(id=permission_id, del_flag=1).update(del_flag=0)
|
||||
await RolePermission.filter(permission_id=permission_id, del_flag=1).update(del_flag=0)
|
||||
sub_permissions = await Permission.filter(parent_id=permission_id, del_flag=1).all()
|
||||
for sub_department in sub_permissions:
|
||||
await delete_permission_recursive(sub_department.id)
|
||||
return True
|
||||
|
||||
@permissionAPI.put("/update/{id}", response_model=BaseResponse, response_class=JSONResponse, summary="更新权限")
|
||||
@permissionAPI.post("/update/{id}", response_model=BaseResponse, response_class=JSONResponse, summary="更新权限")
|
||||
@Log(title="更新权限", business_type=BusinessType.UPDATE)
|
||||
|
||||
Reference in New Issue
Block a user