From dfbc1595e0fc7bf38ea073b97203901e2b00f02f Mon Sep 17 00:00:00 2001 From: colin Date: Thu, 19 Dec 2024 17:52:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(roles):=20=E5=A2=9E=E5=8A=A0=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=A3=B0=E6=98=8E=E7=AE=A1=E7=90=86.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packages/@abp/identity/src/api/roles.ts | 58 ++++++++++++- .../src/components/roles/RoleClaimModal.vue | 81 +++++++++++++++++++ .../src/components/roles/RoleTable.vue | 10 +++ .../src/components/users/UserTable.vue | 1 - 4 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 apps/vben5/packages/@abp/identity/src/components/roles/RoleClaimModal.vue diff --git a/apps/vben5/packages/@abp/identity/src/api/roles.ts b/apps/vben5/packages/@abp/identity/src/api/roles.ts index 06da49391..652cd79b5 100644 --- a/apps/vben5/packages/@abp/identity/src/api/roles.ts +++ b/apps/vben5/packages/@abp/identity/src/api/roles.ts @@ -1,5 +1,11 @@ -import type { PagedResultDto } from '@abp/core'; +import type { ListResultDto, PagedResultDto } from '@abp/core'; +import type { + IdentityClaimCreateDto, + IdentityClaimDeleteDto, + IdentityClaimDto, + IdentityClaimUpdateDto, +} from '../types/claims'; import type { GetRolePagedListInput, IdentityRoleCreateDto, @@ -78,3 +84,53 @@ export function removeOrganizationUnitApi( `/api/identity/roles/${id}/organization-units/${ouId}`, ); } + +/** + * 获取角色声明列表 + * @param id 角色id + */ +export function getClaimsApi( + id: string, +): Promise> { + return requestClient.get>( + `/api/identity/roles/${id}/claims`, + ); +} + +/** + * 删除角色声明 + * @param id 角色id + * @param input 角色声明dto + */ +export function deleteClaimApi( + id: string, + input: IdentityClaimDeleteDto, +): Promise { + return requestClient.delete(`/api/identity/roles/${id}/claims`, { + params: input, + }); +} + +/** + * 创建角色声明 + * @param id 角色id + * @param input 角色声明dto + */ +export function createClaimApi( + id: string, + input: IdentityClaimCreateDto, +): Promise { + return requestClient.post(`/api/identity/roles/${id}/claims`, input); +} + +/** + * 更新角色声明 + * @param id 角色id + * @param input 用户角色dto + */ +export function updateClaimApi( + id: string, + input: IdentityClaimUpdateDto, +): Promise { + return requestClient.put(`/api/identity/roles/${id}/claims`, input); +} diff --git a/apps/vben5/packages/@abp/identity/src/components/roles/RoleClaimModal.vue b/apps/vben5/packages/@abp/identity/src/components/roles/RoleClaimModal.vue new file mode 100644 index 000000000..a41fde54c --- /dev/null +++ b/apps/vben5/packages/@abp/identity/src/components/roles/RoleClaimModal.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue b/apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue index 7a90bbd32..225013e46 100644 --- a/apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue @@ -33,12 +33,16 @@ const MenuOutlined = createIconifyIcon('heroicons-outline:menu-alt-3'); const ClaimOutlined = createIconifyIcon('la:id-card-solid'); const PermissionsOutlined = createIconifyIcon('icon-park-outline:permissions'); const RoleModal = defineAsyncComponent(() => import('./RoleModal.vue')); +const ClaimModal = defineAsyncComponent(() => import('./RoleClaimModal.vue')); const abpStore = useAbpStore(); const { hasAccessByCodes } = useAccess(); const [RolePermissionModal, permissionModalApi] = useVbenModal({ connectedComponent: PermissionModal, }); +const [RoleClaimModal, claimModalApi] = useVbenModal({ + connectedComponent: ClaimModal, +}); const formOptions: VbenFormProps = { // 默认展开 @@ -134,6 +138,11 @@ const handleDelete = (row: IdentityRoleDto) => { const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => { switch (info.key) { + case 'claims': { + claimModalApi.setData(row); + claimModalApi.open(); + break; + } case 'permissions': { const roles = abpStore.application?.currentUser.roles ?? []; permissionModalApi.setData({ @@ -233,6 +242,7 @@ const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => { + diff --git a/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue b/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue index ec654fa32..758e31ebd 100644 --- a/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue @@ -194,7 +194,6 @@ const handleUnlock = async (row: IdentityUserDto) => { const handleMenuClick = async (row: IdentityUserDto, info: MenuInfo) => { switch (info.key) { case 'claims': { - console.log(claimModalApi); claimModalApi.setData(row); claimModalApi.open(); break;