Browse Source

Merge pull request #1052 from colinin/role-manage

Role manage
pull/1059/head
yx lin 1 year ago
committed by GitHub
parent
commit
e48c347646
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 58
      apps/vben5/packages/@abp/identity/src/api/roles.ts
  2. 20
      apps/vben5/packages/@abp/identity/src/api/users.ts
  3. 37
      apps/vben5/packages/@abp/identity/src/components/claims/ClaimModal.vue
  4. 156
      apps/vben5/packages/@abp/identity/src/components/claims/ClaimTable.vue
  5. 35
      apps/vben5/packages/@abp/identity/src/components/claims/types.ts
  6. 81
      apps/vben5/packages/@abp/identity/src/components/roles/RoleClaimModal.vue
  7. 26
      apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue
  8. 160
      apps/vben5/packages/@abp/identity/src/components/users/UserClaimModal.vue
  9. 2
      apps/vben5/packages/@abp/identity/src/constants/permissions.ts
  10. 19
      apps/vben5/packages/@abp/identity/src/types/claim-types.ts
  11. 28
      apps/vben5/packages/@abp/identity/src/types/claims.ts
  12. 17
      apps/vben5/packages/@abp/identity/src/types/users.ts

58
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<ListResultDto<IdentityClaimDto>> {
return requestClient.get<ListResultDto<IdentityClaimDto>>(
`/api/identity/roles/${id}/claims`,
);
}
/**
*
* @param id id
* @param input dto
*/
export function deleteClaimApi(
id: string,
input: IdentityClaimDeleteDto,
): Promise<void> {
return requestClient.delete(`/api/identity/roles/${id}/claims`, {
params: input,
});
}
/**
*
* @param id id
* @param input dto
*/
export function createClaimApi(
id: string,
input: IdentityClaimCreateDto,
): Promise<void> {
return requestClient.post(`/api/identity/roles/${id}/claims`, input);
}
/**
*
* @param id id
* @param input dto
*/
export function updateClaimApi(
id: string,
input: IdentityClaimUpdateDto,
): Promise<void> {
return requestClient.put(`/api/identity/roles/${id}/claims`, input);
}

20
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<ListResultDto<IdentityUserClaimDto>> {
return requestClient.get<ListResultDto<IdentityUserClaimDto>>(
): Promise<ListResultDto<IdentityClaimDto>> {
return requestClient.get<ListResultDto<IdentityClaimDto>>(
`/api/identity/users/${id}/claims`,
);
}
@ -171,7 +173,7 @@ export function getClaimsApi(
*/
export function deleteClaimApi(
id: string,
input: IdentityUserClaimDeleteDto,
input: IdentityClaimDeleteDto,
): Promise<void> {
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<void> {
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<void> {
return requestClient.put(`/api/identity/users/${id}/claims`, input);
}

37
apps/vben5/packages/@abp/identity/src/components/users/UserClaimEditModal.vue → apps/vben5/packages/@abp/identity/src/components/claims/ClaimModal.vue

@ -1,22 +1,19 @@
<script setup lang="ts">
import type { IdentityUserClaimDto } from '../../types/users';
import type { IdentityClaimDto } from '../../types/claims';
import type { ClaimEditModalProps } from './types';
import { useVbenForm, useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { getAssignableClaimsApi } from '../../api/claim-types';
import { createClaimApi, updateClaimApi } from '../../api/users';
interface IdentityUserClaimVto extends IdentityUserClaimDto {
userId: string;
}
defineOptions({
name: 'UserClaimEditModal',
name: 'ClaimModal',
});
const { createApi, updateApi } = defineProps<ClaimEditModalProps>();
const emits = defineEmits<{
(event: 'change', data: IdentityUserClaimDto): void;
(event: 'change', data: IdentityClaimDto): void;
}>();
const [Form, formApi] = useVbenForm({
@ -53,20 +50,20 @@ const [Modal, modalApi] = useVbenModal({
if (isOpen) {
try {
modalApi.setState({ loading: true });
const claimVto = modalApi.getData<IdentityUserClaimVto>();
const claimDto = modalApi.getData<IdentityClaimDto>();
formApi.setValues({
...claimVto,
newClaimValue: claimVto.claimValue,
...claimDto,
newClaimValue: claimDto.claimValue,
});
// ,
formApi.updateSchema([
{
disabled: !!claimVto.id,
disabled: !!claimDto.id,
fieldName: 'claimType',
},
]);
//
!claimVto.id && (await initAssignableClaims());
!claimDto.id && (await initAssignableClaims());
} finally {
modalApi.setState({ loading: false });
}
@ -94,19 +91,19 @@ async function initAssignableClaims() {
async function onSubmit(values: Record<string, any>) {
try {
modalApi.setState({ confirmLoading: true });
const claimVto = modalApi.getData<IdentityUserClaimVto>();
const api = claimVto.id
? updateClaimApi(claimVto.userId, {
claimType: claimVto.claimType,
claimValue: claimVto.claimValue,
const claimDto = modalApi.getData<IdentityClaimDto>();
const api = claimDto.id
? updateApi({
claimType: claimDto.claimType,
claimValue: claimDto.claimValue,
newClaimValue: values.claimValue,
})
: createClaimApi(claimVto.userId, {
: createApi({
claimType: values.claimType,
claimValue: values.claimValue,
});
await api;
emits('change', values as IdentityUserClaimDto);
emits('change', values as IdentityClaimDto);
modalApi.close();
} finally {
modalApi.setState({ confirmLoading: false });

156
apps/vben5/packages/@abp/identity/src/components/claims/ClaimTable.vue

@ -0,0 +1,156 @@
<script setup lang="ts">
import type { VxeGridProps } from '@abp/ui';
import type { IdentityClaimDto } from '../../types/claims';
import type { ClaimModalEvents, ClaimModalProps } from './types';
import { defineAsyncComponent, h } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { useVbenVxeGrid } from '@abp/ui';
import { DeleteOutlined, EditOutlined } from '@ant-design/icons-vue';
import { Button, Popconfirm } from 'ant-design-vue';
defineOptions({
name: 'ClaimTable',
});
const {
createApi,
createPolicy,
deleteApi,
deletePolicy,
getApi,
updateApi,
updatePolicy,
} = defineProps<ClaimModalProps>();
const emits = defineEmits<ClaimModalEvents>();
const ClaimModal = defineAsyncComponent(() => import('./ClaimModal.vue'));
const gridOptions: VxeGridProps<IdentityClaimDto> = {
columns: [
{
field: 'claimType',
minWidth: 120,
title: $t('AbpIdentity.DisplayName:ClaimType'),
},
{
field: 'claimValue',
title: $t('AbpIdentity.DisplayName:ClaimValue'),
width: 'auto',
},
{
field: 'action',
fixed: 'right',
slots: { default: 'action' },
title: $t('AbpUi.Actions'),
width: 180,
},
],
exportConfig: {},
keepSource: true,
pagerConfig: {
enabled: false,
},
proxyConfig: {
ajax: {
query: async () => {
return await getApi();
},
},
response: {
total: 'totalCount',
list: 'items',
},
},
toolbarConfig: {
custom: true,
export: true,
// import: true,
refresh: true,
zoom: true,
},
};
const [Grid, { query }] = useVbenVxeGrid({
gridOptions,
});
const [ClaimEditModal, editModalApi] = useVbenModal({
connectedComponent: ClaimModal,
});
function onCreate() {
editModalApi.setData({});
editModalApi.open();
}
async function onDelete(row: IdentityClaimDto) {
await deleteApi({
claimType: row.claimType,
claimValue: row.claimValue,
});
query();
emits('onDelete');
}
function onUpdate(row: IdentityClaimDto) {
editModalApi.setData(row);
editModalApi.open();
}
</script>
<template>
<div>
<Grid>
<template #toolbar-tools>
<Button type="primary" v-access:code="[createPolicy]" @click="onCreate">
{{ $t('AbpIdentity.AddClaim') }}
</Button>
</template>
<template #action="{ row }">
<div class="flex flex-row">
<div class="basis-1/2">
<Button
:icon="h(EditOutlined)"
block
type="link"
v-access:code="[updatePolicy]"
@click="onUpdate(row)"
>
{{ $t('AbpUi.Edit') }}
</Button>
</div>
<div class="basis-1/2">
<Popconfirm
:title="$t('AbpIdentity.WillDeleteClaim', [row.claimType])"
@confirm="onDelete(row)"
>
<Button
:icon="h(DeleteOutlined)"
block
danger
type="link"
v-access:code="[deletePolicy]"
>
{{ $t('AbpUi.Delete') }}
</Button>
</Popconfirm>
</div>
</div>
</template>
</Grid>
<ClaimEditModal
:create-api="createApi"
:create-policy="createPolicy"
:delete-api="deleteApi"
:delete-policy="deletePolicy"
:update-api="updateApi"
:update-policy="updatePolicy"
@change="() => query()"
/>
</div>
</template>
<style scoped></style>

35
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<void>;
/** 新增声明权限代码 */
createPolicy: string;
/** 删除声明api */
deleteApi: (input: IdentityClaimDeleteDto) => Promise<void>;
/** 删除声明权限代码 */
deletePolicy: string;
/** 更新声明api */
updateApi: (input: IdentityClaimUpdateDto) => Promise<void>;
/** 更新声明权限代码 */
updatePolicy: string;
}
interface ClaimModalProps extends ClaimEditModalProps {
/** 加载声明列表api */
getApi: () => Promise<ListResultDto<IdentityClaimDto>>;
}
interface ClaimModalEvents {
(event: 'change', data: IdentityClaimDto): void;
(event: 'onDelete'): void;
}
export type { ClaimEditModalProps, ClaimModalEvents, ClaimModalProps };

81
apps/vben5/packages/@abp/identity/src/components/roles/RoleClaimModal.vue

@ -0,0 +1,81 @@
<script setup lang="ts">
import type { IdentityRoleDto } from '../../types';
import type {
IdentityClaimCreateDto,
IdentityClaimDeleteDto,
IdentityClaimUpdateDto,
} from '../../types/claims';
import { defineAsyncComponent } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import {
createClaimApi,
deleteClaimApi,
getClaimsApi,
updateClaimApi,
} from '../../api/roles';
import { IdentityRolePermissions } from '../../constants/permissions';
defineOptions({
name: 'RoleClaimModal',
});
const ClaimTable = defineAsyncComponent(
() => import('../claims/ClaimTable.vue'),
);
const [Modal, modalApi] = useVbenModal({
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onConfirm: async () => {},
showCancelButton: false,
showConfirmButton: false,
title: $t('AbpIdentity.ManageClaim'),
});
async function onGet() {
const { id } = modalApi.getData<IdentityRoleDto>();
return await getClaimsApi(id);
}
async function onCreate(input: IdentityClaimCreateDto) {
const { id } = modalApi.getData<IdentityRoleDto>();
await createClaimApi(id, input);
}
async function onDelete(input: IdentityClaimDeleteDto) {
const { id } = modalApi.getData<IdentityRoleDto>();
await deleteClaimApi(id, input);
}
async function onUpdate(input: IdentityClaimUpdateDto) {
const { id } = modalApi.getData<IdentityRoleDto>();
await updateClaimApi(id, input);
}
defineExpose({
modalApi,
});
</script>
<template>
<Modal>
<ClaimTable
:create-api="onCreate"
:create-policy="IdentityRolePermissions.ManageClaims"
:delete-api="onDelete"
:delete-policy="IdentityRolePermissions.ManageClaims"
:get-api="onGet"
:update-api="onUpdate"
:update-policy="IdentityRolePermissions.ManageClaims"
/>
</Modal>
</template>
<style scoped></style>

26
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) => {
<template #toolbar-tools>
<Button
type="primary"
v-access:code="[IdentitRolePermissions.Create]"
v-access:code="[IdentityRolePermissions.Create]"
@click="handleAdd"
>
{{ $t('AbpIdentity.NewRole') }}
@ -179,7 +188,7 @@ const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => {
:icon="h(EditOutlined)"
block
type="link"
v-access:code="[IdentitRolePermissions.Update]"
v-access:code="[IdentityRolePermissions.Update]"
@click="handleEdit(row)"
>
{{ $t('AbpUi.Edit') }}
@ -191,7 +200,7 @@ const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => {
block
danger
type="link"
v-access:code="[IdentitRolePermissions.Delete]"
v-access:code="[IdentityRolePermissions.Delete]"
@click="handleDelete(row)"
>
{{ $t('AbpUi.Delete') }}
@ -203,7 +212,9 @@ const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => {
<Menu @click="(info) => handleMenuClick(row, info)">
<MenuItem
v-if="
hasAccessByCodes([IdentitRolePermissions.ManagePermissions])
hasAccessByCodes([
IdentityRolePermissions.ManagePermissions,
])
"
key="permissions"
:icon="h(PermissionsOutlined)"
@ -211,7 +222,9 @@ const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => {
{{ $t('AbpPermissionManagement.Permissions') }}
</MenuItem>
<MenuItem
v-if="hasAccessByCodes([IdentitRolePermissions.ManageClaims])"
v-if="
hasAccessByCodes([IdentityRolePermissions.ManageClaims])
"
key="claims"
:icon="h(ClaimOutlined)"
>
@ -233,6 +246,7 @@ const handleMenuClick = async (row: IdentityRoleDto, info: MenuInfo) => {
</template>
</Grid>
<RoleEditModal @change="() => query()" />
<RoleClaimModal @change="query" />
<RolePermissionModal />
</template>

160
apps/vben5/packages/@abp/identity/src/components/users/UserClaimModal.vue

@ -1,26 +1,30 @@
<script setup lang="ts">
import type { VxeGridProps } from '@abp/ui';
import type { IdentityUserDto } from '../../types';
import type {
IdentityClaimCreateDto,
IdentityClaimDeleteDto,
IdentityClaimUpdateDto,
} from '../../types/claims';
import type { IdentityUserClaimDto, IdentityUserDto } from '../../types';
import { defineAsyncComponent, h } from 'vue';
import { defineAsyncComponent } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { useVbenVxeGrid } from '@abp/ui';
import { DeleteOutlined, EditOutlined } from '@ant-design/icons-vue';
import { Button, Popconfirm } from 'ant-design-vue';
import { deleteClaimApi, getClaimsApi } from '../../api/users';
import {
createClaimApi,
deleteClaimApi,
getClaimsApi,
updateClaimApi,
} from '../../api/users';
import { IdentityUserPermissions } from '../../constants/permissions';
defineOptions({
name: 'UserClaimModal',
});
const ClaimEditModal = defineAsyncComponent(
() => import('./UserClaimEditModal.vue'),
const ClaimTable = defineAsyncComponent(
() => import('../claims/ClaimTable.vue'),
);
const [Modal, modalApi] = useVbenModal({
@ -34,129 +38,43 @@ const [Modal, modalApi] = useVbenModal({
showConfirmButton: false,
title: $t('AbpIdentity.ManageClaim'),
});
const gridOptions: VxeGridProps<IdentityUserClaimDto> = {
columns: [
{
field: 'claimType',
minWidth: 120,
title: $t('AbpIdentity.DisplayName:ClaimType'),
},
{
field: 'claimValue',
title: $t('AbpIdentity.DisplayName:ClaimValue'),
width: 'auto',
},
{
field: 'action',
fixed: 'right',
slots: { default: 'action' },
title: $t('AbpUi.Actions'),
width: 180,
},
],
exportConfig: {},
keepSource: true,
pagerConfig: {
enabled: false,
},
proxyConfig: {
ajax: {
query: async () => {
const { id } = modalApi.getData<IdentityUserDto>();
return await getClaimsApi(id);
},
},
response: {
total: 'totalCount',
list: 'items',
},
},
toolbarConfig: {
custom: true,
export: true,
// import: true,
refresh: true,
zoom: true,
},
};
const [Grid, { query }] = useVbenVxeGrid({
gridOptions,
});
const [UserClaimEditModal, editModalApi] = useVbenModal({
connectedComponent: ClaimEditModal,
});
function onCreate() {
async function onGet() {
const { id } = modalApi.getData<IdentityUserDto>();
return await getClaimsApi(id);
}
async function onCreate(input: IdentityClaimCreateDto) {
const { id } = modalApi.getData<IdentityUserDto>();
editModalApi.setData({
userId: id,
});
editModalApi.open();
await createClaimApi(id, input);
}
async function onDelete(row: IdentityUserClaimDto) {
async function onDelete(input: IdentityClaimDeleteDto) {
const { id } = modalApi.getData<IdentityUserDto>();
await deleteClaimApi(id, {
claimType: row.claimType,
claimValue: row.claimValue,
}).then(() => query());
await deleteClaimApi(id, input);
}
function onUpdate(row: IdentityUserClaimDto) {
async function onUpdate(input: IdentityClaimUpdateDto) {
const { id } = modalApi.getData<IdentityUserDto>();
editModalApi.setData({
userId: id,
...row,
});
editModalApi.open();
await updateClaimApi(id, input);
}
defineExpose({
modalApi,
});
</script>
<template>
<Modal>
<Grid>
<template #toolbar-tools>
<Button
type="primary"
v-access:code="[IdentityUserPermissions.ManageClaims]"
@click="onCreate"
>
{{ $t('AbpIdentity.AddClaim') }}
</Button>
</template>
<template #action="{ row }">
<div class="flex flex-row">
<div class="basis-1/2">
<Button
:icon="h(EditOutlined)"
block
type="link"
v-access:code="[IdentityUserPermissions.ManageClaims]"
@click="onUpdate(row)"
>
{{ $t('AbpUi.Edit') }}
</Button>
</div>
<div class="basis-1/2">
<Popconfirm
:title="$t('AbpIdentity.WillDeleteClaim', [row.claimType])"
@confirm="onDelete(row)"
>
<Button
:icon="h(DeleteOutlined)"
block
danger
type="link"
v-access:code="[IdentityUserPermissions.Delete]"
>
{{ $t('AbpUi.Delete') }}
</Button>
</Popconfirm>
</div>
</div>
</template>
</Grid>
<UserClaimEditModal @change="() => query()" />
<ClaimTable
:create-api="onCreate"
:create-policy="IdentityUserPermissions.ManageClaims"
:delete-api="onDelete"
:delete-policy="IdentityUserPermissions.ManageClaims"
:get-api="onGet"
:update-api="onUpdate"
:update-policy="IdentityUserPermissions.ManageClaims"
/>
</Modal>
</template>

2
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',
/** 删除 */

19
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,
};

28
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,
};

17
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,

Loading…
Cancel
Save