feat: 部门管理添加按钮级权限控制,移除部门角色表
This commit is contained in:
54
api/user.py
54
api/user.py
@@ -22,7 +22,7 @@ from exceptions.exception import ModelValidatorException
|
||||
from models import File as FileModel
|
||||
from models import Role, Department
|
||||
from models.user import User, UserRole
|
||||
from schemas.common import BaseResponse
|
||||
from schemas.common import BaseResponse, DeleteListParams
|
||||
from schemas.department import GetDepartmentListResponse
|
||||
from schemas.file import UploadFileResponse
|
||||
from schemas.user import AddUserParams, GetUserListResponse, GetUserInfoResponse, UpdateUserParams, \
|
||||
@@ -46,7 +46,7 @@ async def add_user(
|
||||
if await QueryController.register_user_before(username=params.username, phone=params.phone, email=params.email):
|
||||
return Response.error(msg="添加失败,用户已存在!")
|
||||
params.password = await Password.get_password_hash(input_password=params.password)
|
||||
department = await Department.get_or_none(id=params.department_id)
|
||||
department = await Department.get_or_none(id=params.department_id, del_flag=1)
|
||||
user = await User.create(
|
||||
username=params.username,
|
||||
password=params.password,
|
||||
@@ -73,13 +73,31 @@ async def delete_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):
|
||||
await user.delete()
|
||||
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="删除成功!")
|
||||
else:
|
||||
return Response.error(msg="删除失败,用户不存在!")
|
||||
|
||||
|
||||
@userAPI.delete("/deleteUserList", response_class=JSONResponse, response_model=BaseResponse, summary="批量删除用户")
|
||||
@userAPI.post("/deleteUserList", response_class=JSONResponse, response_model=BaseResponse, summary="批量删除用户")
|
||||
@Log(title="批量删除用户", business_type=BusinessType.DELETE)
|
||||
@Auth(["user:btn:deleteUser"])
|
||||
async def delete_user_list(
|
||||
request: Request,
|
||||
params: DeleteListParams,
|
||||
current_user: dict = Depends(LoginController.get_current_user)
|
||||
):
|
||||
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
|
||||
await user.save()
|
||||
return Response.success(msg="删除成功!")
|
||||
|
||||
|
||||
@userAPI.put("/update/{id}", response_class=JSONResponse, response_model=BaseResponse, summary="更新用户")
|
||||
@userAPI.post("/update/{id}", response_class=JSONResponse, response_model=BaseResponse, summary="更新用户")
|
||||
@Log(title="更新用户", business_type=BusinessType.UPDATE)
|
||||
@@ -91,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):
|
||||
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):
|
||||
if department := await Department.get_or_none(id=params.department_id,del_flag=1):
|
||||
user.department = department
|
||||
else:
|
||||
user.department = None
|
||||
@@ -115,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):
|
||||
if user := await User.get_or_none(id=id,del_flag=1):
|
||||
user = await user.first().values(
|
||||
id="id",
|
||||
create_time="create_time",
|
||||
@@ -164,8 +182,8 @@ async def get_user_list(
|
||||
}
|
||||
if not department_id:
|
||||
filterArgs['department_id__in'] = sub_departments
|
||||
total = await User.filter(**filterArgs).count()
|
||||
result = await User.filter(**filterArgs).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",
|
||||
@@ -181,7 +199,8 @@ async def get_user_list(
|
||||
return Response.success(data={
|
||||
"result": result,
|
||||
"total": total,
|
||||
"page": page
|
||||
"page": page,
|
||||
"pageSize": pageSize
|
||||
})
|
||||
|
||||
|
||||
@@ -219,7 +238,8 @@ 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):
|
||||
await userRole.delete()
|
||||
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")}')
|
||||
return Response.success(msg="删除成功!")
|
||||
@@ -251,7 +271,8 @@ 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):
|
||||
await userRole.delete()
|
||||
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}')
|
||||
return Response.success(msg="修改成功!")
|
||||
@@ -306,7 +327,8 @@ async def get_user_role_list(
|
||||
return Response.success(data={
|
||||
"result": result,
|
||||
"total": len(result),
|
||||
"page": 1
|
||||
"page": 1,
|
||||
"pageSize": 10,
|
||||
})
|
||||
|
||||
|
||||
@@ -317,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)))
|
||||
@@ -331,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, 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',
|
||||
@@ -395,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, 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="重置密码成功!")
|
||||
|
||||
Reference in New Issue
Block a user