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;