feat: add tenant-scoped rule and permission management
This commit is contained in:
@@ -8,7 +8,7 @@ from fastapi.responses import JSONResponse
|
||||
from fastapi_common.fastapi_common_security.security import verify_access_token
|
||||
from fastapi_common.fastapi_common_web.controller import BaseController
|
||||
|
||||
from fastapi_modules.fastapi_leaudit.domian.Dto.rbacAdminDto import RoleAccessSaveDTO, RoleCreateDTO, RolePermissionsBatchDTO, RoleRoutesUpdateDTO, RoleUpdateDTO, UserRolesAssignDTO
|
||||
from fastapi_modules.fastapi_leaudit.domian.Dto.rbacAdminDto import RoleAccessSaveDTO, RoleCreateDTO, RolePermissionsBatchDTO, RoleRoutesUpdateDTO, RoleUpdateDTO, UserRolesAssignDTO, UserTenantUpdateDTO
|
||||
from fastapi_modules.fastapi_leaudit.services.impl.rbacAdminServiceImpl import RbacAdminServiceImpl
|
||||
from fastapi_modules.fastapi_leaudit.services.rbacAdminService import IRbacAdminService
|
||||
|
||||
@@ -56,11 +56,12 @@ class RbacAdminController(BaseController):
|
||||
payload: dict[str, Any] = Depends(verify_access_token),
|
||||
page: int = Query(1, ge=1),
|
||||
page_size: int = Query(50, ge=1, le=200),
|
||||
area: str | None = Query(None),
|
||||
area: str | None = Query(None, description="兼容租户展示值/旧地区"),
|
||||
tenant_code: str | None = Query(None, description="租户编码"),
|
||||
nick_name: str | None = Query(None),
|
||||
):
|
||||
"""查询用户列表。"""
|
||||
data = await self.RbacAdminService.ListUsers(int(payload["user_id"]), page, page_size, area, nick_name)
|
||||
data = await self.RbacAdminService.ListUsers(int(payload["user_id"]), page, page_size, area, tenant_code, nick_name)
|
||||
return JSONResponse(status_code=200, content={"code": 200, "message": "success", "data": data.model_dump()})
|
||||
|
||||
@self.router.get("/admin/users/organizations/tree")
|
||||
@@ -79,11 +80,12 @@ class RbacAdminController(BaseController):
|
||||
payload: dict[str, Any] = Depends(verify_access_token),
|
||||
page: int = Query(1, ge=1),
|
||||
page_size: int = Query(50, ge=1, le=200),
|
||||
area: str | None = Query(None),
|
||||
area: str | None = Query(None, description="兼容租户展示值/旧地区"),
|
||||
tenant_code: str | None = Query(None, description="租户编码"),
|
||||
username: str | None = Query(None),
|
||||
):
|
||||
"""查询指定角色下的用户列表。"""
|
||||
data = await self.RbacAdminService.ListRoleUsers(int(payload["user_id"]), RoleId, page, page_size, area, username)
|
||||
data = await self.RbacAdminService.ListRoleUsers(int(payload["user_id"]), RoleId, page, page_size, area, tenant_code, username)
|
||||
return JSONResponse(status_code=200, content={"code": 200, "message": "success", "data": data.model_dump()})
|
||||
|
||||
@self.router.post("/v3/rbac/users/{UserId}/roles")
|
||||
@@ -92,6 +94,12 @@ class RbacAdminController(BaseController):
|
||||
data = await self.RbacAdminService.AssignUserRoles(int(payload["user_id"]), UserId, Body.role_ids)
|
||||
return JSONResponse(status_code=200, content={"code": 200, "message": "角色分配成功", "data": data.model_dump()})
|
||||
|
||||
@self.router.put("/v3/rbac/users/{UserId}/tenant")
|
||||
async def UpdateUserTenant(UserId: int, Body: UserTenantUpdateDTO, payload: dict[str, Any] = Depends(verify_access_token)):
|
||||
"""更新用户租户。"""
|
||||
data = await self.RbacAdminService.UpdateUserTenant(int(payload["user_id"]), UserId, Body)
|
||||
return JSONResponse(status_code=200, content={"code": 200, "message": "用户租户更新成功", "data": data.model_dump()})
|
||||
|
||||
@self.router.delete("/v3/rbac/users/{UserId}/roles/{RoleId}")
|
||||
async def RevokeUserRole(UserId: int, RoleId: int, payload: dict[str, Any] = Depends(verify_access_token)):
|
||||
"""移除用户角色。"""
|
||||
|
||||
Reference in New Issue
Block a user