feat: 角色管理添加按钮级权限控制

This commit is contained in:
2025-02-22 16:23:50 +08:00
parent d3c107c4fa
commit 5cf2adf53e
2 changed files with 157 additions and 118 deletions

View File

@@ -92,8 +92,8 @@ async def delete_user_list(
):
sub_departments = current_user.get("sub_departments")
for id in params.ids:
if user := await User.get_or_none(id=id, department__id__in=sub_departments,del_flag=1):
user.del_flag=0
if user := await User.get_or_none(id=id, department__id__in=sub_departments, del_flag=1):
user.del_flag = 0
await user.save()
return Response.success(msg="删除成功!")
@@ -109,14 +109,14 @@ async def update_user(
current_user: dict = Depends(LoginController.get_current_user)
):
sub_departments = current_user.get("sub_departments")
if user := await User.get_or_none(id=id, department__id__in=sub_departments,del_flag=1):
if user := await User.get_or_none(id=id, department__id__in=sub_departments, del_flag=1):
user.username = params.username
user.nickname = params.nickname
user.phone = params.phone
user.email = params.email
user.gender = params.gender
user.status = params.status
if department := await Department.get_or_none(id=params.department_id,del_flag=1):
if department := await Department.get_or_none(id=params.department_id, del_flag=1):
user.department = department
else:
user.department = None
@@ -133,7 +133,7 @@ async def update_user(
@Auth(["user:btn:Userinfo"])
async def get_user_info(request: Request, id: str = Path(..., description="用户ID"),
current_user: dict = Depends(LoginController.get_current_user)):
if user := await User.get_or_none(id=id,del_flag=1):
if user := await User.get_or_none(id=id, del_flag=1):
user = await user.first().values(
id="id",
create_time="create_time",
@@ -182,8 +182,8 @@ async def get_user_list(
}
if not department_id:
filterArgs['department_id__in'] = sub_departments
total = await User.filter(**filterArgs,del_flag=1).count()
result = await User.filter(**filterArgs,del_flag=1).offset((page - 1) * pageSize).limit(pageSize).values(
total = await User.filter(**filterArgs, del_flag=1).count()
result = await User.filter(**filterArgs, del_flag=1).offset((page - 1) * pageSize).limit(pageSize).values(
id="id",
create_time="create_time",
update_time="update_time",
@@ -238,7 +238,7 @@ async def delete_user_role(request: Request, id: str = Path(description="用户
current_user: dict = Depends(LoginController.get_current_user)):
sub_departments = current_user.get("sub_departments")
if userRole := await UserRole.get_or_none(id=id, del_flag=1, user__department__id__in=sub_departments):
userRole.del_flag=0
userRole.del_flag = 0
await userRole.save()
if await request.app.state.redis.get(f'{RedisKeyConfig.USER_INFO.key}:{current_user.get("id")}'):
await request.app.state.redis.delete(f'{RedisKeyConfig.USER_INFO.key}:{current_user.get("id")}')
@@ -271,7 +271,7 @@ async def update_user_role(request: Request, params: UpdateUserRoleParams,
for role_id in deleteRoles:
if userRole := await UserRole.get_or_none(user_id=params.user_id, role_id=role_id, del_flag=1,
user__department__id__in=sub_departments):
userRole.del_flag=0
userRole.del_flag = 0
await userRole.save()
if await request.app.state.redis.get(f'{RedisKeyConfig.USER_INFO.key}:{params.user_id}'):
await request.app.state.redis.delete(f'{RedisKeyConfig.USER_INFO.key}:{params.user_id}')
@@ -339,7 +339,7 @@ async def get_user_role_list(
async def get_user_permission_list(request: Request, id: str = Path(description="用户ID"),
current_user: dict = Depends(LoginController.get_current_user)):
sub_departments = current_user.get("sub_departments")
permissions = await QueryController.get_user_permissions(user_id=id,sub_departments=sub_departments)
permissions = await QueryController.get_user_permissions(user_id=id, sub_departments=sub_departments)
permissions = await filterKeyValues(permissions, "id")
# 获取用户角色
return Response.success(data=list(set(permissions)))
@@ -353,7 +353,7 @@ async def upload_user_avatar(
id: str = Path(description="用户ID"),
file: UploadFile = File(...), current_user: dict = Depends(LoginController.get_current_user)):
sub_departments = current_user.get("sub_departments")
if user := await User.get_or_none(id=id, del_flag=1,department__id__in=sub_departments):
if user := await User.get_or_none(id=id, del_flag=1, department__id__in=sub_departments):
image_mimetypes = [
'image/jpeg',
'image/png',
@@ -417,7 +417,7 @@ async def upload_user_avatar(
@Auth(permission_list=["user:btn:reset_password"])
async def reset_user_password(request: Request, params: ResetPasswordParams, id: str = Path(description="用户ID"),
current_user: dict = Depends(LoginController.get_current_user)):
if user := await User.get_or_none(id=id,del_flag=1, department__id__in=current_user.get("sub_departments")):
if user := await User.get_or_none(id=id, del_flag=1, department__id__in=current_user.get("sub_departments")):
user.password = await Password.get_password_hash(params.password)
await user.save()
return Response.success(msg="重置密码成功!")