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/api/users.ts b/apps/vben5/packages/@abp/identity/src/api/users.ts index f73e7a2dc..56848c068 100644 --- a/apps/vben5/packages/@abp/identity/src/api/users.ts +++ b/apps/vben5/packages/@abp/identity/src/api/users.ts @@ -1,13 +1,15 @@ import type { ListResultDto, PagedResultDto } from '@abp/core'; import type { IdentityRoleDto, OrganizationUnitDto } from '../types'; +import type { + IdentityClaimCreateDto, + IdentityClaimDeleteDto, + IdentityClaimDto, + IdentityClaimUpdateDto, +} from '../types/claims'; import type { ChangeUserPasswordInput, GetUserPagedListInput, - IdentityUserClaimCreateDto, - IdentityUserClaimDeleteDto, - IdentityUserClaimDto, - IdentityUserClaimUpdateDto, IdentityUserCreateDto, IdentityUserDto, IdentityUserUpdateDto, @@ -158,8 +160,8 @@ export function getRolesApi( */ export function getClaimsApi( id: string, -): Promise> { - return requestClient.get>( +): Promise> { + return requestClient.get>( `/api/identity/users/${id}/claims`, ); } @@ -171,7 +173,7 @@ export function getClaimsApi( */ export function deleteClaimApi( id: string, - input: IdentityUserClaimDeleteDto, + input: IdentityClaimDeleteDto, ): Promise { return requestClient.delete(`/api/identity/users/${id}/claims`, { params: input, @@ -185,7 +187,7 @@ export function deleteClaimApi( */ export function createClaimApi( id: string, - input: IdentityUserClaimCreateDto, + input: IdentityClaimCreateDto, ): Promise { return requestClient.post(`/api/identity/users/${id}/claims`, input); } @@ -197,7 +199,7 @@ export function createClaimApi( */ export function updateClaimApi( id: string, - input: IdentityUserClaimUpdateDto, + input: IdentityClaimUpdateDto, ): Promise { return requestClient.put(`/api/identity/users/${id}/claims`, input); } diff --git a/apps/vben5/packages/@abp/identity/src/components/users/UserClaimEditModal.vue b/apps/vben5/packages/@abp/identity/src/components/claims/ClaimModal.vue similarity index 72% rename from apps/vben5/packages/@abp/identity/src/components/users/UserClaimEditModal.vue rename to apps/vben5/packages/@abp/identity/src/components/claims/ClaimModal.vue index 94ce61037..4709cd7e4 100644 --- a/apps/vben5/packages/@abp/identity/src/components/users/UserClaimEditModal.vue +++ b/apps/vben5/packages/@abp/identity/src/components/claims/ClaimModal.vue @@ -1,22 +1,19 @@ + + + + diff --git a/apps/vben5/packages/@abp/identity/src/components/claims/types.ts b/apps/vben5/packages/@abp/identity/src/components/claims/types.ts new file mode 100644 index 000000000..6f2f6a22b --- /dev/null +++ b/apps/vben5/packages/@abp/identity/src/components/claims/types.ts @@ -0,0 +1,35 @@ +import type { ListResultDto } from '@abp/core'; + +import type { + IdentityClaimCreateDto, + IdentityClaimDeleteDto, + IdentityClaimDto, + IdentityClaimUpdateDto, +} from '../../types/claims'; + +interface ClaimEditModalProps { + /** 新增声明api */ + createApi: (input: IdentityClaimCreateDto) => Promise; + /** 新增声明权限代码 */ + createPolicy: string; + /** 删除声明api */ + deleteApi: (input: IdentityClaimDeleteDto) => Promise; + /** 删除声明权限代码 */ + deletePolicy: string; + /** 更新声明api */ + updateApi: (input: IdentityClaimUpdateDto) => Promise; + /** 更新声明权限代码 */ + updatePolicy: string; +} + +interface ClaimModalProps extends ClaimEditModalProps { + /** 加载声明列表api */ + getApi: () => Promise>; +} + +interface ClaimModalEvents { + (event: 'change', data: IdentityClaimDto): void; + (event: 'onDelete'): void; +} + +export type { ClaimEditModalProps, ClaimModalEvents, ClaimModalProps }; 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..6fcc1c115 --- /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..5e8a8d044 100644 --- a/apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue @@ -22,7 +22,7 @@ import { import { Button, Dropdown, Menu, Modal, Tag } from 'ant-design-vue'; import { deleteApi, getPagedListApi } from '../../api/roles'; -import { IdentitRolePermissions } from '../../constants/permissions'; +import { IdentityRolePermissions } from '../../constants/permissions'; defineOptions({ name: 'RoleTable', @@ -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({ @@ -154,7 +163,7 @@ const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => { + diff --git a/apps/vben5/packages/@abp/identity/src/components/users/UserClaimModal.vue b/apps/vben5/packages/@abp/identity/src/components/users/UserClaimModal.vue index e29a306ad..1ce9b43e2 100644 --- a/apps/vben5/packages/@abp/identity/src/components/users/UserClaimModal.vue +++ b/apps/vben5/packages/@abp/identity/src/components/users/UserClaimModal.vue @@ -1,26 +1,30 @@ diff --git a/apps/vben5/packages/@abp/identity/src/constants/permissions.ts b/apps/vben5/packages/@abp/identity/src/constants/permissions.ts index 8ba622647..23faa1206 100644 --- a/apps/vben5/packages/@abp/identity/src/constants/permissions.ts +++ b/apps/vben5/packages/@abp/identity/src/constants/permissions.ts @@ -12,7 +12,7 @@ export const IdentityUserPermissions = { Update: 'AbpIdentity.Users.Update', }; /** 角色权限 */ -export const IdentitRolePermissions = { +export const IdentityRolePermissions = { /** 新增 */ Create: 'AbpIdentity.Roles.Create', /** 删除 */ diff --git a/apps/vben5/packages/@abp/identity/src/types/claim-types.ts b/apps/vben5/packages/@abp/identity/src/types/claim-types.ts index 09741db51..2a7215ada 100644 --- a/apps/vben5/packages/@abp/identity/src/types/claim-types.ts +++ b/apps/vben5/packages/@abp/identity/src/types/claim-types.ts @@ -42,28 +42,9 @@ interface GetIdentityClaimTypePagedListInput filter?: string; } -interface IdentityClaimDto { - claimType: string; - claimValue: string; -} - -interface IdentityClaimDeleteDto { - claimType: string; - claimValue: string; -} - -type IdentityClaimCreateDto = IdentityClaimDeleteDto; - -interface IdentityClaimUpdateDto extends IdentityClaimDeleteDto { - newClaimValue: string; -} - export type { GetIdentityClaimTypePagedListInput, - IdentityClaimCreateDto, - IdentityClaimDto, IdentityClaimTypeCreateDto, IdentityClaimTypeDto, IdentityClaimTypeUpdateDto, - IdentityClaimUpdateDto, }; diff --git a/apps/vben5/packages/@abp/identity/src/types/claims.ts b/apps/vben5/packages/@abp/identity/src/types/claims.ts new file mode 100644 index 000000000..7e1a61d75 --- /dev/null +++ b/apps/vben5/packages/@abp/identity/src/types/claims.ts @@ -0,0 +1,28 @@ +interface IdentityClaimDto { + claimType: string; + claimValue: string; + id: string; +} + +interface IdentityClaimDeleteDto { + claimType: string; + claimValue: string; +} + +interface IdentityClaimUpdateDto { + claimType: string; + claimValue: string; + newClaimValue: string; +} + +interface IdentityClaimCreateDto { + claimType: string; + claimValue: string; +} + +export type { + IdentityClaimCreateDto, + IdentityClaimDeleteDto, + IdentityClaimDto, + IdentityClaimUpdateDto, +}; diff --git a/apps/vben5/packages/@abp/identity/src/types/users.ts b/apps/vben5/packages/@abp/identity/src/types/users.ts index 075564265..9c718cd88 100644 --- a/apps/vben5/packages/@abp/identity/src/types/users.ts +++ b/apps/vben5/packages/@abp/identity/src/types/users.ts @@ -6,8 +6,6 @@ import type { PagedAndSortedResultRequestDto, } from '@abp/core'; -import type { IdentityClaimDto } from './claim-types'; - /** 用户对象接口 */ interface IUser { /** 邮件地址 */ @@ -92,25 +90,10 @@ interface GetUserPagedListInput extends PagedAndSortedResultRequestDto { type IdentityUserCreateDto = IdentityUserCreateOrUpdateDto; type IdentityUserUpdateDto = IdentityUserCreateOrUpdateDto; -interface IdentityUserClaimDto extends IdentityClaimDto { - id: string; -} - -interface IdentityUserClaimUpdateDto extends IdentityClaimDto { - newClaimValue: string; -} - -type IdentityUserClaimDeleteDto = IdentityClaimDto; -type IdentityUserClaimCreateDto = IdentityClaimDto; - export type { ChangeMyPasswordInput, ChangeUserPasswordInput, GetUserPagedListInput, - IdentityUserClaimCreateDto, - IdentityUserClaimDeleteDto, - IdentityUserClaimDto, - IdentityUserClaimUpdateDto, IdentityUserCreateDto, IdentityUserDto, IdentityUserOrganizationUnitUpdateDto,