Browse Source

feat: 使用 `useRequest` 管理中断请求.

pull/1071/head
colin 1 year ago
parent
commit
3f02d0057c
  1. 85
      apps/vben5/packages/@abp/identity/src/api/claim-types.ts
  2. 12
      apps/vben5/packages/@abp/identity/src/api/index.ts
  3. 227
      apps/vben5/packages/@abp/identity/src/api/organization-units.ts
  4. 136
      apps/vben5/packages/@abp/identity/src/api/roles.ts
  5. 41
      apps/vben5/packages/@abp/identity/src/api/security-logs.ts
  6. 105
      apps/vben5/packages/@abp/identity/src/api/useClaimTypesApi.ts
  7. 271
      apps/vben5/packages/@abp/identity/src/api/useOrganizationUnitsApi.ts
  8. 164
      apps/vben5/packages/@abp/identity/src/api/useRolesApi.ts
  9. 57
      apps/vben5/packages/@abp/identity/src/api/useSecurityLogsApi.ts
  10. 74
      apps/vben5/packages/@abp/identity/src/api/useUserLookup.ts
  11. 249
      apps/vben5/packages/@abp/identity/src/api/useUsersApi.ts
  12. 55
      apps/vben5/packages/@abp/identity/src/api/users-lookup.ts
  13. 205
      apps/vben5/packages/@abp/identity/src/api/users.ts
  14. 6
      apps/vben5/packages/@abp/identity/src/components/claim-types/ClaimTypeModal.vue
  15. 6
      apps/vben5/packages/@abp/identity/src/components/claim-types/ClaimTypeTable.vue
  16. 7
      apps/vben5/packages/@abp/identity/src/components/claims/ClaimModal.vue
  17. 12
      apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitModal.vue
  18. 57
      apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue
  19. 15
      apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitTree.vue
  20. 9
      apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitUserTable.vue
  21. 6
      apps/vben5/packages/@abp/identity/src/components/organization-units/SelectMemberModal.vue
  22. 6
      apps/vben5/packages/@abp/identity/src/components/organization-units/SelectRoleModal.vue
  23. 12
      apps/vben5/packages/@abp/identity/src/components/roles/RoleClaimModal.vue
  24. 6
      apps/vben5/packages/@abp/identity/src/components/roles/RoleModal.vue
  25. 7
      apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue
  26. 7
      apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogDrawer.vue
  27. 7
      apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue
  28. 13
      apps/vben5/packages/@abp/identity/src/components/users/UserClaimModal.vue
  29. 6
      apps/vben5/packages/@abp/identity/src/components/users/UserLockModal.vue
  30. 40
      apps/vben5/packages/@abp/identity/src/components/users/UserModal.vue
  31. 6
      apps/vben5/packages/@abp/identity/src/components/users/UserPasswordModal.vue
  32. 6
      apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue
  33. 4
      apps/vben5/packages/@abp/request/package.json
  34. 1
      apps/vben5/packages/@abp/request/src/hooks/index.ts
  35. 60
      apps/vben5/packages/@abp/request/src/hooks/useRequest.ts
  36. 3
      apps/vben5/packages/@abp/request/src/index.ts
  37. 1
      apps/vben5/packages/@abp/request/src/types/index.ts

85
apps/vben5/packages/@abp/identity/src/api/claim-types.ts

@ -1,85 +0,0 @@
import type { ListResultDto, PagedResultDto } from '@abp/core';
import type {
GetIdentityClaimTypePagedListInput,
IdentityClaimTypeCreateDto,
IdentityClaimTypeDto,
IdentityClaimTypeUpdateDto,
} from '../types/claim-types';
import { requestClient } from '@abp/request';
/**
*
* @param input
* @returns
*/
export function createApi(
input: IdentityClaimTypeCreateDto,
): Promise<IdentityClaimTypeDto> {
return requestClient.post<IdentityClaimTypeDto>(
'/api/identity/claim-types',
input,
);
}
/**
*
* @param id id
*/
export function deleteApi(id: string): Promise<void> {
return requestClient.delete(`/api/identity/claim-types/${id}`);
}
/**
*
* @param id id
* @returns
*/
export function getApi(id: string): Promise<IdentityClaimTypeDto> {
return requestClient.get<IdentityClaimTypeDto>(
`/api/identity/claim-types/${id}`,
);
}
/**
*
* @param id id
* @returns
*/
export function updateApi(
id: string,
input: IdentityClaimTypeUpdateDto,
): Promise<IdentityClaimTypeDto> {
return requestClient.put<IdentityClaimTypeDto>(
`/api/identity/claim-types/${id}`,
input,
);
}
/**
*
* @param input
* @returns
*/
export function getPagedListApi(
input?: GetIdentityClaimTypePagedListInput,
): Promise<PagedResultDto<IdentityClaimTypeDto>> {
return requestClient.get<PagedResultDto<IdentityClaimTypeDto>>(
`/api/identity/claim-types`,
{
params: input,
},
);
}
/**
*
*/
export function getAssignableClaimsApi(): Promise<
ListResultDto<IdentityClaimTypeDto>
> {
return requestClient.get<ListResultDto<IdentityClaimTypeDto>>(
`/api/identity/claim-types/actived-list`,
);
}

12
apps/vben5/packages/@abp/identity/src/api/index.ts

@ -1,6 +1,6 @@
export * as claimTypesApi from './claim-types';
export * as organizationUnitsApi from './organization-units';
export * as rolesApi from './roles';
export * as securityLogsApi from './security-logs';
export * as usersApi from './users';
export * as userLookupApi from './users-lookup';
export * as useClaimTypesApi from './useClaimTypesApi';
export * as useOrganizationUnitsApi from './useOrganizationUnitsApi';
export * as useRolesApi from './useRolesApi';
export * as useSecurityLogsApi from './useSecurityLogsApi';
export * as useUserLookup from './useUserLookup';
export * as useUsersApi from './useUsersApi';

227
apps/vben5/packages/@abp/identity/src/api/organization-units.ts

@ -1,227 +0,0 @@
import type { ListResultDto, PagedResultDto } from '@abp/core';
import type { IdentityRoleDto, IdentityUserDto } from '../types';
import type {
GetIdentityRolesInput,
GetIdentityUsersInput,
GetOrganizationUnitPagedListInput,
GetUnaddedRoleListInput,
GetUnaddedUserListInput,
OrganizationUnitAddRoleDto,
OrganizationUnitAddUserDto,
OrganizationUnitCreateDto,
OrganizationUnitDto,
OrganizationUnitGetChildrenDto,
OrganizationUnitUpdateDto,
} from '../types/organization-units';
import { requestClient } from '@abp/request';
/**
*
* @param input
* @returns
*/
export function createApi(
input: OrganizationUnitCreateDto,
): Promise<OrganizationUnitDto> {
return requestClient.post<OrganizationUnitDto>(
'/api/identity/organization-units',
input,
);
}
/**
*
* @param id id
*/
export function deleteApi(id: string): Promise<void> {
return requestClient.delete(`/api/identity/organization-units/${id}`);
}
/**
*
* @param id id
* @returns
*/
export function getApi(id: string): Promise<OrganizationUnitDto> {
return requestClient.get<OrganizationUnitDto>(
`/api/identity/organization-units/${id}`,
);
}
/**
*
* @param id id
* @returns
*/
export function updateApi(
id: string,
input: OrganizationUnitUpdateDto,
): Promise<OrganizationUnitDto> {
return requestClient.put<OrganizationUnitDto>(
`/api/identity/organization-units/${id}`,
input,
);
}
/**
*
* @param input
* @returns
*/
export function getPagedListApi(
input?: GetOrganizationUnitPagedListInput,
): Promise<PagedResultDto<OrganizationUnitDto>> {
return requestClient.get<PagedResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units`,
{
params: input,
},
);
}
/**
*
* @returns
*/
export function getRootListApi(): Promise<ListResultDto<OrganizationUnitDto>> {
return requestClient.get<ListResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units/root-node`,
);
}
/**
*
* @returns
*/
export function getAllListApi(): Promise<ListResultDto<OrganizationUnitDto>> {
return requestClient.get<ListResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units/all`,
);
}
/**
*
* @param input
* @returns
*/
export function getChildrenApi(
input: OrganizationUnitGetChildrenDto,
): Promise<ListResultDto<OrganizationUnitDto>> {
return requestClient.get<ListResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units/find-children`,
{
params: input,
},
);
}
/**
*
* @param id id
* @param input
* @returns
*/
export function getUserListApi(
id: string,
input?: GetIdentityUsersInput,
): Promise<PagedResultDto<IdentityUserDto>> {
return requestClient.get<PagedResultDto<IdentityUserDto>>(
`/api/identity/organization-units/${id}/users`,
{
params: input,
},
);
}
/**
*
* @param input
* @returns
*/
export function getUnaddedUserListApi(
input: GetUnaddedUserListInput,
): Promise<PagedResultDto<IdentityUserDto>> {
return requestClient.get<PagedResultDto<IdentityUserDto>>(
`/api/identity/organization-units/${input.id}/unadded-users`,
{
params: input,
},
);
}
/**
*
* @param id id
* @param input id列表
*/
export function addMembers(
id: string,
input: OrganizationUnitAddUserDto,
): Promise<void> {
return requestClient.post(
`/api/identity/organization-units/${id}/users`,
input,
);
}
/**
*
* @param id id
* @param input
* @returns
*/
export function getRoleListApi(
id: string,
input?: GetIdentityRolesInput,
): Promise<PagedResultDto<IdentityRoleDto>> {
return requestClient.get<PagedResultDto<IdentityRoleDto>>(
`/api/identity/organization-units/${id}/roles`,
{
params: input,
},
);
}
/**
*
* @param input
* @returns
*/
export function getUnaddedRoleListApi(
input: GetUnaddedRoleListInput,
): Promise<PagedResultDto<IdentityRoleDto>> {
return requestClient.get<PagedResultDto<IdentityRoleDto>>(
`/api/identity/organization-units/${input.id}/unadded-roles`,
{
params: input,
},
);
}
/**
*
* @param id id
* @param input id列表
*/
export function addRoles(
id: string,
input: OrganizationUnitAddRoleDto,
): Promise<void> {
return requestClient.post(
`/api/identity/organization-units/${id}/roles`,
input,
);
}
/**
*
* @param id id
* @param parentId id
*/
export function moveTo(id: string, parentId?: string): Promise<void> {
return requestClient.put(`api/identity/organization-units/${id}/move`, {
parentId,
});
}

136
apps/vben5/packages/@abp/identity/src/api/roles.ts

@ -1,136 +0,0 @@
import type { ListResultDto, PagedResultDto } from '@abp/core';
import type {
IdentityClaimCreateDto,
IdentityClaimDeleteDto,
IdentityClaimDto,
IdentityClaimUpdateDto,
} from '../types/claims';
import type {
GetRolePagedListInput,
IdentityRoleCreateDto,
IdentityRoleDto,
IdentityRoleUpdateDto,
} from '../types/roles';
import { requestClient } from '@abp/request';
/**
*
* @param input
* @returns
*/
export function createApi(
input: IdentityRoleCreateDto,
): Promise<IdentityRoleDto> {
return requestClient.post<IdentityRoleDto>('/api/identity/roles', input);
}
/**
*
* @param id id
*/
export function deleteApi(id: string): Promise<void> {
return requestClient.delete(`/api/identity/roles/${id}`);
}
/**
*
* @param id id
* @returns
*/
export function getApi(id: string): Promise<IdentityRoleDto> {
return requestClient.get<IdentityRoleDto>(`/api/identity/roles/${id}`);
}
/**
*
* @param id id
* @returns
*/
export function updateApi(
id: string,
input: IdentityRoleUpdateDto,
): Promise<IdentityRoleDto> {
return requestClient.put<IdentityRoleDto>(`/api/identity/roles/${id}`, input);
}
/**
*
* @param input
* @returns
*/
export function getPagedListApi(
input?: GetRolePagedListInput,
): Promise<PagedResultDto<IdentityRoleDto>> {
return requestClient.get<PagedResultDto<IdentityRoleDto>>(
`/api/identity/roles`,
{
params: input,
},
);
}
/**
*
* @param id id
* @param ouId id
*/
export function removeOrganizationUnitApi(
id: string,
ouId: string,
): Promise<void> {
return requestClient.delete(
`/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);
}

41
apps/vben5/packages/@abp/identity/src/api/security-logs.ts

@ -1,41 +0,0 @@
import type { PagedResultDto } from '@abp/core';
import type {
GetSecurityLogPagedRequest,
SecurityLogDto,
} from '../types/security-logs';
import { requestClient } from '@abp/request';
/**
*
* @param id id
*/
export function deleteApi(id: string): Promise<void> {
return requestClient.delete(`/api/auditing/security-log/${id}`);
}
/**
*
* @param id id
* @returns
*/
export function getApi(id: string): Promise<SecurityLogDto> {
return requestClient.get<SecurityLogDto>(`/api/auditing/security-log/${id}`);
}
/**
*
* @param input
* @returns
*/
export function getPagedListApi(
input?: GetSecurityLogPagedRequest,
): Promise<PagedResultDto<SecurityLogDto>> {
return requestClient.get<PagedResultDto<SecurityLogDto>>(
`/api/auditing/security-log`,
{
params: input,
},
);
}

105
apps/vben5/packages/@abp/identity/src/api/useClaimTypesApi.ts

@ -0,0 +1,105 @@
import type { ListResultDto, PagedResultDto } from '@abp/core';
import type {
GetIdentityClaimTypePagedListInput,
IdentityClaimTypeCreateDto,
IdentityClaimTypeDto,
IdentityClaimTypeUpdateDto,
} from '../types';
import { useRequest } from '@abp/request';
export function useClaimTypesApi() {
const { cancel, request } = useRequest();
/**
*
* @param input
* @returns
*/
function createApi(
input: IdentityClaimTypeCreateDto,
): Promise<IdentityClaimTypeDto> {
return request<IdentityClaimTypeDto>('/api/identity/claim-types', {
data: input,
method: 'POST',
});
}
/**
*
* @param id id
*/
function deleteApi(id: string): Promise<void> {
return request(`/api/identity/claim-types/${id}`, {
method: 'DELETE',
});
}
/**
*
* @param id id
* @returns
*/
function getApi(id: string): Promise<IdentityClaimTypeDto> {
return request<IdentityClaimTypeDto>(`/api/identity/claim-types/${id}`, {
method: 'GET',
});
}
/**
*
* @param id id
* @returns
*/
function updateApi(
id: string,
input: IdentityClaimTypeUpdateDto,
): Promise<IdentityClaimTypeDto> {
return request<IdentityClaimTypeDto>(`/api/identity/claim-types/${id}`, {
data: input,
method: 'PUT',
});
}
/**
*
* @param input
* @returns
*/
function getPagedListApi(
input?: GetIdentityClaimTypePagedListInput,
): Promise<PagedResultDto<IdentityClaimTypeDto>> {
return request<PagedResultDto<IdentityClaimTypeDto>>(
`/api/identity/claim-types`,
{
method: 'GET',
params: input,
},
);
}
/**
*
*/
function getAssignableClaimsApi(): Promise<
ListResultDto<IdentityClaimTypeDto>
> {
return request<ListResultDto<IdentityClaimTypeDto>>(
`/api/identity/claim-types/actived-list`,
{
method: 'GET',
},
);
}
return {
cancel,
createApi,
deleteApi,
getApi,
getAssignableClaimsApi,
getPagedListApi,
updateApi,
};
}

271
apps/vben5/packages/@abp/identity/src/api/useOrganizationUnitsApi.ts

@ -0,0 +1,271 @@
import type { ListResultDto, PagedResultDto } from '@abp/core';
import type { IdentityRoleDto, IdentityUserDto } from '../types';
import type {
GetIdentityRolesInput,
GetIdentityUsersInput,
GetOrganizationUnitPagedListInput,
GetUnaddedRoleListInput,
GetUnaddedUserListInput,
OrganizationUnitAddRoleDto,
OrganizationUnitAddUserDto,
OrganizationUnitCreateDto,
OrganizationUnitDto,
OrganizationUnitGetChildrenDto,
OrganizationUnitUpdateDto,
} from '../types/organization-units';
import { useRequest } from '@abp/request';
export function useOrganizationUnitsApi() {
const { cancel, request } = useRequest();
/**
*
* @param input
* @returns
*/
function createApi(
input: OrganizationUnitCreateDto,
): Promise<OrganizationUnitDto> {
return request<OrganizationUnitDto>('/api/identity/organization-units', {
data: input,
method: 'GET',
});
}
/**
*
* @param id id
*/
function deleteApi(id: string): Promise<void> {
return request(`/api/identity/organization-units/${id}`, {
method: 'DELETE',
});
}
/**
*
* @param id id
* @returns
*/
function getApi(id: string): Promise<OrganizationUnitDto> {
return request<OrganizationUnitDto>(
`/api/identity/organization-units/${id}`,
{
method: 'GET',
},
);
}
/**
*
* @param id id
* @returns
*/
function updateApi(
id: string,
input: OrganizationUnitUpdateDto,
): Promise<OrganizationUnitDto> {
return request<OrganizationUnitDto>(
`/api/identity/organization-units/${id}`,
{
data: input,
method: 'PUT',
},
);
}
/**
*
* @param input
* @returns
*/
function getPagedListApi(
input?: GetOrganizationUnitPagedListInput,
): Promise<PagedResultDto<OrganizationUnitDto>> {
return request<PagedResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units`,
{
method: 'GET',
params: input,
},
);
}
/**
*
* @returns
*/
function getRootListApi(): Promise<ListResultDto<OrganizationUnitDto>> {
return request<ListResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units/root-node`,
{
method: 'GET',
},
);
}
/**
*
* @returns
*/
function getAllListApi(): Promise<ListResultDto<OrganizationUnitDto>> {
return request<ListResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units/all`,
{
method: 'GET',
},
);
}
/**
*
* @param input
* @returns
*/
function getChildrenApi(
input: OrganizationUnitGetChildrenDto,
): Promise<ListResultDto<OrganizationUnitDto>> {
return request<ListResultDto<OrganizationUnitDto>>(
`/api/identity/organization-units/find-children`,
{
method: 'GET',
params: input,
},
);
}
/**
*
* @param id id
* @param input
* @returns
*/
function getUserListApi(
id: string,
input?: GetIdentityUsersInput,
): Promise<PagedResultDto<IdentityUserDto>> {
return request<PagedResultDto<IdentityUserDto>>(
`/api/identity/organization-units/${id}/users`,
{
method: 'GET',
params: input,
},
);
}
/**
*
* @param input
* @returns
*/
function getUnaddedUserListApi(
input: GetUnaddedUserListInput,
): Promise<PagedResultDto<IdentityUserDto>> {
return request<PagedResultDto<IdentityUserDto>>(
`/api/identity/organization-units/${input.id}/unadded-users`,
{
method: 'GET',
params: input,
},
);
}
/**
*
* @param id id
* @param input id列表
*/
function addMembers(
id: string,
input: OrganizationUnitAddUserDto,
): Promise<void> {
return request(`/api/identity/organization-units/${id}/users`, {
data: input,
method: 'POST',
});
}
/**
*
* @param id id
* @param input
* @returns
*/
function getRoleListApi(
id: string,
input?: GetIdentityRolesInput,
): Promise<PagedResultDto<IdentityRoleDto>> {
return request<PagedResultDto<IdentityRoleDto>>(
`/api/identity/organization-units/${id}/roles`,
{
method: 'GET',
params: input,
},
);
}
/**
*
* @param input
* @returns
*/
function getUnaddedRoleListApi(
input: GetUnaddedRoleListInput,
): Promise<PagedResultDto<IdentityRoleDto>> {
return request<PagedResultDto<IdentityRoleDto>>(
`/api/identity/organization-units/${input.id}/unadded-roles`,
{
method: 'GET',
params: input,
},
);
}
/**
*
* @param id id
* @param input id列表
*/
function addRoles(
id: string,
input: OrganizationUnitAddRoleDto,
): Promise<void> {
return request(`/api/identity/organization-units/${id}/roles`, {
data: input,
method: 'GET',
});
}
/**
*
* @param id id
* @param parentId id
*/
function moveTo(id: string, parentId?: string): Promise<void> {
return request(`api/identity/organization-units/${id}/move`, {
data: { parentId },
method: 'PUT',
});
}
return {
addMembers,
addRoles,
cancel,
createApi,
deleteApi,
getAllListApi,
getApi,
getChildrenApi,
getPagedListApi,
getRoleListApi,
getRootListApi,
getUnaddedRoleListApi,
getUnaddedUserListApi,
getUserListApi,
moveTo,
updateApi,
};
}

164
apps/vben5/packages/@abp/identity/src/api/useRolesApi.ts

@ -0,0 +1,164 @@
import type { ListResultDto, PagedResultDto } from '@abp/core';
import type {
IdentityClaimCreateDto,
IdentityClaimDeleteDto,
IdentityClaimDto,
IdentityClaimUpdateDto,
} from '../types/claims';
import type {
GetRolePagedListInput,
IdentityRoleCreateDto,
IdentityRoleDto,
IdentityRoleUpdateDto,
} from '../types/roles';
import { useRequest } from '@abp/request';
export function useRolesApi() {
const { cancel, request } = useRequest();
/**
*
* @param input
* @returns
*/
function createApi(input: IdentityRoleCreateDto): Promise<IdentityRoleDto> {
return request<IdentityRoleDto>('/api/identity/roles', {
data: input,
method: 'POST',
});
}
/**
*
* @param id id
*/
function deleteApi(id: string): Promise<void> {
return request(`/api/identity/roles/${id}`, {
method: 'DELETE',
});
}
/**
*
* @param id id
* @returns
*/
function getApi(id: string): Promise<IdentityRoleDto> {
return request<IdentityRoleDto>(`/api/identity/roles/${id}`, {
method: 'GET',
});
}
/**
*
* @param id id
* @returns
*/
function updateApi(
id: string,
input: IdentityRoleUpdateDto,
): Promise<IdentityRoleDto> {
return request<IdentityRoleDto>(`/api/identity/roles/${id}`, {
data: input,
method: 'PUT',
});
}
/**
*
* @param input
* @returns
*/
function getPagedListApi(
input?: GetRolePagedListInput,
): Promise<PagedResultDto<IdentityRoleDto>> {
return request<PagedResultDto<IdentityRoleDto>>(`/api/identity/roles`, {
method: 'GET',
params: input,
});
}
/**
*
* @param id id
* @param ouId id
*/
function removeOrganizationUnitApi(id: string, ouId: string): Promise<void> {
return request(`/api/identity/roles/${id}/organization-units/${ouId}`, {
method: 'DELETE',
});
}
/**
*
* @param id id
*/
function getClaimsApi(id: string): Promise<ListResultDto<IdentityClaimDto>> {
return request<ListResultDto<IdentityClaimDto>>(
`/api/identity/roles/${id}/claims`,
{
method: 'GET',
},
);
}
/**
*
* @param id id
* @param input dto
*/
function deleteClaimApi(
id: string,
input: IdentityClaimDeleteDto,
): Promise<void> {
return request(`/api/identity/roles/${id}/claims`, {
method: 'DELETE',
params: input,
});
}
/**
*
* @param id id
* @param input dto
*/
function createClaimApi(
id: string,
input: IdentityClaimCreateDto,
): Promise<void> {
return request(`/api/identity/roles/${id}/claims`, {
data: input,
method: 'POST',
});
}
/**
*
* @param id id
* @param input dto
*/
function updateClaimApi(
id: string,
input: IdentityClaimUpdateDto,
): Promise<void> {
return request(`/api/identity/roles/${id}/claims`, {
data: input,
method: 'PUT',
});
}
return {
cancel,
createApi,
createClaimApi,
deleteApi,
deleteClaimApi,
getApi,
getClaimsApi,
getPagedListApi,
removeOrganizationUnitApi,
updateApi,
updateClaimApi,
};
}

57
apps/vben5/packages/@abp/identity/src/api/useSecurityLogsApi.ts

@ -0,0 +1,57 @@
import type { PagedResultDto } from '@abp/core';
import type {
GetSecurityLogPagedRequest,
SecurityLogDto,
} from '../types/security-logs';
import { useRequest } from '@abp/request';
export function useSecurityLogsApi() {
const { cancel, request } = useRequest();
/**
*
* @param id id
*/
function deleteApi(id: string): Promise<void> {
return request(`/api/auditing/security-log/${id}`, {
method: 'DELETE',
});
}
/**
*
* @param id id
* @returns
*/
function getApi(id: string): Promise<SecurityLogDto> {
return request<SecurityLogDto>(`/api/auditing/security-log/${id}`, {
method: 'GET',
});
}
/**
*
* @param input
* @returns
*/
function getPagedListApi(
input?: GetSecurityLogPagedRequest,
): Promise<PagedResultDto<SecurityLogDto>> {
return request<PagedResultDto<SecurityLogDto>>(
`/api/auditing/security-log`,
{
method: 'GET',
params: input,
},
);
}
return {
cancel,
deleteApi,
getApi,
getPagedListApi,
};
}

74
apps/vben5/packages/@abp/identity/src/api/useUserLookup.ts

@ -0,0 +1,74 @@
import type { ListResultDto } from '@abp/core';
import type {
IdentityUserDto,
UserLookupCountInput,
UserLookupSearchInput,
} from '../types/users';
import { useRequest } from '@abp/request';
export function useUserLookup() {
const { cancel, request } = useRequest();
/**
* id查询用户
* @param id id
* @returns
*/
function findByIdApi(id: string): Promise<IdentityUserDto> {
return request<IdentityUserDto>(`/api/identity/users/lookup/${id}`, {
method: 'GET',
});
}
/**
*
* @param userName
* @returns
*/
function findByUserNameApi(userName: string): Promise<IdentityUserDto> {
return request<IdentityUserDto>(
`/api/identity/users/lookup/by-username/${userName}`,
{
method: 'GET',
},
);
}
/**
*
* @param input
* @returns
*/
function searchApi(
input?: UserLookupSearchInput,
): Promise<ListResultDto<IdentityUserDto>> {
return request<ListResultDto<IdentityUserDto>>(
`/api/identity/users/lookup/search`,
{
method: 'GET',
params: input,
},
);
}
/**
*
* @param input
*/
function countApi(input?: UserLookupCountInput): Promise<number> {
return request<number>(`/api/identity/users/lookup/count`, {
method: 'GET',
params: input,
});
}
return {
cancel,
countApi,
findByIdApi,
findByUserNameApi,
searchApi,
};
}

249
apps/vben5/packages/@abp/identity/src/api/useUsersApi.ts

@ -0,0 +1,249 @@
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,
IdentityUserCreateDto,
IdentityUserDto,
IdentityUserUpdateDto,
} from '../types/users';
import { useRequest } from '@abp/request';
export function useUserApi() {
const { cancel, request } = useRequest();
/**
*
* @param input
* @returns
*/
function createApi(input: IdentityUserCreateDto): Promise<IdentityUserDto> {
return request<IdentityUserDto>('/api/identity/users', {
data: input,
method: 'POST',
});
}
/**
*
* @param id id
*/
function deleteApi(id: string): Promise<void> {
return request(`/api/identity/users/${id}`, {
method: 'DELETE',
});
}
/**
*
* @param id id
* @returns
*/
function getApi(id: string): Promise<IdentityUserDto> {
return request<IdentityUserDto>(`/api/identity/users/${id}`, {
method: 'GET',
});
}
/**
*
* @param id id
* @returns
*/
function updateApi(
id: string,
input: IdentityUserUpdateDto,
): Promise<IdentityUserDto> {
return request<IdentityUserDto>(`/api/identity/users/${id}`, {
data: input,
method: 'PUT',
});
}
/**
*
* @param input
* @returns
*/
function getPagedListApi(
input?: GetUserPagedListInput,
): Promise<PagedResultDto<IdentityUserDto>> {
return request<PagedResultDto<IdentityUserDto>>(`/api/identity/users`, {
method: 'GET',
params: input,
});
}
/**
*
* @param id id
* @param ouId id
*/
function removeOrganizationUnitApi(id: string, ouId: string): Promise<void> {
return request(`/api/identity/users/${id}/organization-units/${ouId}`, {
method: 'DELETE',
});
}
/**
*
* @param id id
*/
function getOrganizationUnitsApi(
id: string,
): Promise<ListResultDto<OrganizationUnitDto>> {
return request<ListResultDto<OrganizationUnitDto>>(
`/api/identity/users/${id}/organization-units`,
{
method: 'GET',
},
);
}
/**
*
* @param id id
* @param seconds ()
*/
function lockApi(id: string, seconds: number): Promise<void> {
return request(`/api/identity/users/${id}/lock/${seconds}`, {
method: 'PUT',
});
}
/**
*
* @param id id
*/
function unLockApi(id: string): Promise<void> {
return request(`/api/identity/users/${id}/unlock`, {
method: 'PUT',
});
}
/**
*
* @param id id
* @param input dto
*/
function changePasswordApi(
id: string,
input: ChangeUserPasswordInput,
): Promise<void> {
return request(`/api/identity/users/change-password?id=${id}`, {
data: input,
method: 'PUT',
});
}
/**
*
*/
function getAssignableRolesApi(): Promise<ListResultDto<IdentityRoleDto>> {
return request<ListResultDto<IdentityRoleDto>>(
`/api/identity/users/assignable-roles`,
{
method: 'GET',
},
);
}
/**
*
* @param id id
*/
function getRolesApi(id: string): Promise<ListResultDto<IdentityRoleDto>> {
return request<ListResultDto<IdentityRoleDto>>(
`/api/identity/users/${id}/roles`,
{
method: 'GET',
},
);
}
/**
*
* @param id id
*/
function getClaimsApi(id: string): Promise<ListResultDto<IdentityClaimDto>> {
return request<ListResultDto<IdentityClaimDto>>(
`/api/identity/users/${id}/claims`,
{
method: 'GET',
},
);
}
/**
*
* @param id id
* @param input dto
*/
function deleteClaimApi(
id: string,
input: IdentityClaimDeleteDto,
): Promise<void> {
return request(`/api/identity/users/${id}/claims`, {
method: 'DELETE',
params: input,
});
}
/**
*
* @param id id
* @param input dto
*/
function createClaimApi(
id: string,
input: IdentityClaimCreateDto,
): Promise<void> {
return request(`/api/identity/users/${id}/claims`, {
data: input,
method: 'POST',
});
}
/**
*
* @param id id
* @param input dto
*/
function updateClaimApi(
id: string,
input: IdentityClaimUpdateDto,
): Promise<void> {
return request(`/api/identity/users/${id}/claims`, {
data: input,
method: 'PUT',
});
}
return {
cancel,
changePasswordApi,
createApi,
createClaimApi,
deleteApi,
deleteClaimApi,
getApi,
getAssignableRolesApi,
getClaimsApi,
getOrganizationUnitsApi,
getPagedListApi,
getRolesApi,
lockApi,
removeOrganizationUnitApi,
unLockApi,
updateApi,
updateClaimApi,
};
}

55
apps/vben5/packages/@abp/identity/src/api/users-lookup.ts

@ -1,55 +0,0 @@
import type { ListResultDto } from '@abp/core';
import type {
IdentityUserDto,
UserLookupCountInput,
UserLookupSearchInput,
} from '../types/users';
import { requestClient } from '@abp/request';
/**
* id查询用户
* @param id id
* @returns
*/
export function findByIdApi(id: string): Promise<IdentityUserDto> {
return requestClient.get<IdentityUserDto>(`/api/identity/users/lookup/${id}`);
}
/**
*
* @param userName
* @returns
*/
export function findByUserNameApi(userName: string): Promise<IdentityUserDto> {
return requestClient.get<IdentityUserDto>(
`/api/identity/users/lookup/by-username/${userName}`,
);
}
/**
*
* @param input
* @returns
*/
export function searchApi(
input?: UserLookupSearchInput,
): Promise<ListResultDto<IdentityUserDto>> {
return requestClient.get<ListResultDto<IdentityUserDto>>(
`/api/identity/users/lookup/search`,
{
params: input,
},
);
}
/**
*
* @param input
*/
export function countApi(input?: UserLookupCountInput): Promise<number> {
return requestClient.get<number>(`/api/identity/users/lookup/count`, {
params: input,
});
}

205
apps/vben5/packages/@abp/identity/src/api/users.ts

@ -1,205 +0,0 @@
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,
IdentityUserCreateDto,
IdentityUserDto,
IdentityUserUpdateDto,
} from '../types/users';
import { requestClient } from '@abp/request';
/**
*
* @param input
* @returns
*/
export function createApi(
input: IdentityUserCreateDto,
): Promise<IdentityUserDto> {
return requestClient.post<IdentityUserDto>('/api/identity/users', input);
}
/**
*
* @param id id
*/
export function deleteApi(id: string): Promise<void> {
return requestClient.delete(`/api/identity/users/${id}`);
}
/**
*
* @param id id
* @returns
*/
export function getApi(id: string): Promise<IdentityUserDto> {
return requestClient.get<IdentityUserDto>(`/api/identity/users/${id}`);
}
/**
*
* @param id id
* @returns
*/
export function updateApi(
id: string,
input: IdentityUserUpdateDto,
): Promise<IdentityUserDto> {
return requestClient.put<IdentityUserDto>(`/api/identity/users/${id}`, input);
}
/**
*
* @param input
* @returns
*/
export function getPagedListApi(
input?: GetUserPagedListInput,
): Promise<PagedResultDto<IdentityUserDto>> {
return requestClient.get<PagedResultDto<IdentityUserDto>>(
`/api/identity/users`,
{
params: input,
},
);
}
/**
*
* @param id id
* @param ouId id
*/
export function removeOrganizationUnitApi(
id: string,
ouId: string,
): Promise<void> {
return requestClient.delete(
`/api/identity/users/${id}/organization-units/${ouId}`,
);
}
/**
*
* @param id id
*/
export function getOrganizationUnitsApi(
id: string,
): Promise<ListResultDto<OrganizationUnitDto>> {
return requestClient.get<ListResultDto<OrganizationUnitDto>>(
`/api/identity/users/${id}/organization-units`,
);
}
/**
*
* @param id id
* @param seconds ()
*/
export function lockApi(id: string, seconds: number): Promise<void> {
return requestClient.put(`/api/identity/users/${id}/lock/${seconds}`);
}
/**
*
* @param id id
*/
export function unLockApi(id: string): Promise<void> {
return requestClient.put(`/api/identity/users/${id}/unlock`);
}
/**
*
* @param id id
* @param input dto
*/
export function changePasswordApi(
id: string,
input: ChangeUserPasswordInput,
): Promise<void> {
return requestClient.put(
`/api/identity/users/change-password?id=${id}`,
input,
);
}
/**
*
*/
export function getAssignableRolesApi(): Promise<
ListResultDto<IdentityRoleDto>
> {
return requestClient.get<ListResultDto<IdentityRoleDto>>(
`/api/identity/users/assignable-roles`,
);
}
/**
*
* @param id id
*/
export function getRolesApi(
id: string,
): Promise<ListResultDto<IdentityRoleDto>> {
return requestClient.get<ListResultDto<IdentityRoleDto>>(
`/api/identity/users/${id}/roles`,
);
}
/**
*
* @param id id
*/
export function getClaimsApi(
id: string,
): Promise<ListResultDto<IdentityClaimDto>> {
return requestClient.get<ListResultDto<IdentityClaimDto>>(
`/api/identity/users/${id}/claims`,
);
}
/**
*
* @param id id
* @param input dto
*/
export function deleteClaimApi(
id: string,
input: IdentityClaimDeleteDto,
): Promise<void> {
return requestClient.delete(`/api/identity/users/${id}/claims`, {
params: input,
});
}
/**
*
* @param id id
* @param input dto
*/
export function createClaimApi(
id: string,
input: IdentityClaimCreateDto,
): Promise<void> {
return requestClient.post(`/api/identity/users/${id}/claims`, input);
}
/**
*
* @param id id
* @param input dto
*/
export function updateClaimApi(
id: string,
input: IdentityClaimUpdateDto,
): Promise<void> {
return requestClient.put(`/api/identity/users/${id}/claims`, input);
}

6
apps/vben5/packages/@abp/identity/src/components/claim-types/ClaimTypeModal.vue

@ -18,7 +18,7 @@ import {
Textarea,
} from 'ant-design-vue';
import { createApi, getApi, updateApi } from '../../api/claim-types';
import { useClaimTypesApi } from '../../api/useClaimTypesApi';
import { ValueType } from '../../types/claim-types';
defineOptions({
@ -55,12 +55,16 @@ const valueTypeOptions = reactive<DefaultOptionType[]>([
},
]);
const { cancel, createApi, getApi, updateApi } = useClaimTypesApi();
const [Modal, modalApi] = useVbenModal({
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onClosed() {
cancel('ClaimType Modal has closed!');
},
onConfirm: async () => {
await form.value?.validate();
const api = formModel.value.id

6
apps/vben5/packages/@abp/identity/src/components/claim-types/ClaimTypeTable.vue

@ -14,7 +14,7 @@ import { useVbenVxeGrid } from '@abp/ui';
import { DeleteOutlined, EditOutlined } from '@ant-design/icons-vue';
import { Button, message, Modal } from 'ant-design-vue';
import { deleteApi, getPagedListApi } from '../../api/claim-types';
import { useClaimTypesApi } from '../../api/useClaimTypesApi';
import { IdentityClaimTypePermissions } from '../../constants/permissions';
import { ValueType } from '../../types/claim-types';
@ -29,6 +29,7 @@ const CheckIcon = createIconifyIcon('ant-design:check-outlined');
const CloseIcon = createIconifyIcon('ant-design:close-outlined');
const { hasAccessByCodes } = useAccess();
const { cancel, deleteApi, getPagedListApi } = useClaimTypesApi();
const formOptions: VbenFormProps = {
//
@ -165,6 +166,9 @@ const handleDelete = (row: IdentityClaimTypeDto) => {
Modal.confirm({
centered: true,
content: $t('AbpIdentity.WillDeleteClaim', [row.name]),
onCancel: () => {
cancel('User closed delete modal.');
},
onOk: async () => {
await deleteApi(row.id);
message.success($t('AbpUi.SuccessfullyDeleted'));

7
apps/vben5/packages/@abp/identity/src/components/claims/ClaimModal.vue

@ -5,7 +5,7 @@ import type { ClaimEditModalProps } from './types';
import { useVbenForm, useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { getAssignableClaimsApi } from '../../api/claim-types';
import { useClaimTypesApi } from '../../api/useClaimTypesApi';
defineOptions({
name: 'ClaimModal',
@ -15,7 +15,7 @@ const { createApi, updateApi } = defineProps<ClaimEditModalProps>();
const emits = defineEmits<{
(event: 'change', data: IdentityClaimDto): void;
}>();
const { cancel, getAssignableClaimsApi } = useClaimTypesApi();
const [Form, formApi] = useVbenForm({
commonConfig: {
//
@ -43,6 +43,9 @@ const [Form, formApi] = useVbenForm({
const [Modal, modalApi] = useVbenModal({
draggable: true,
fullscreenButton: false,
onClosed() {
cancel('Claim modal has closed!');
},
async onConfirm() {
await formApi.validateAndSubmitForm();
},

12
apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitModal.vue

@ -10,7 +10,7 @@ import { $t } from '@vben/locales';
import { useVbenForm } from '@abp/ui';
import { createApi, getApi, updateApi } from '../../api/organization-units';
import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi';
defineOptions({
name: 'OrganizationUnitModal',
@ -23,6 +23,7 @@ const defaultModel = {
displayName: '',
} as OrganizationUnitDto;
const { cancel, createApi, getApi, updateApi } = useOrganizationUnitsApi();
const [Form, formApi] = useVbenForm({
handleSubmit: onSubmit,
schema: [
@ -65,6 +66,9 @@ const [Modal, modalApi] = useVbenModal({
onCancel() {
modalApi.close();
},
onClosed() {
cancel('Organization Unit Modal has closed!');
},
onConfirm: async () => {
await formApi.validateAndSubmitForm();
},
@ -97,13 +101,13 @@ const [Modal, modalApi] = useVbenModal({
});
async function onSubmit(input: Record<string, any>) {
const api = input.id
? updateApi(input.id, input as OrganizationUnitUpdateDto)
: createApi(input as OrganizationUnitCreateDto);
try {
modalApi.setState({
confirmLoading: true,
});
const api = input.id
? updateApi(input.id, input as OrganizationUnitUpdateDto)
: createApi(input as OrganizationUnitCreateDto);
const dto = await api;
emits('change', dto);
modalApi.close();

57
apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue

@ -15,8 +15,8 @@ import {
import { DeleteOutlined, PlusOutlined } from '@ant-design/icons-vue';
import { Button, Modal } from 'ant-design-vue';
import { addRoles, getRoleListApi } from '../../api/organization-units';
import { removeOrganizationUnitApi } from '../../api/roles';
import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi';
import { useRolesApi } from '../../api/useRolesApi';
import { OrganizationUnitPermissions } from '../../constants/permissions';
defineOptions({
@ -32,6 +32,8 @@ const SelectRoleModal = defineAsyncComponent(
);
const { hasAccessByCodes } = useAccess();
const { addRoles, getRoleListApi } = useOrganizationUnitsApi();
const { cancel, removeOrganizationUnitApi } = useRolesApi();
const getAddRoleEnabled = computed(() => {
return (
@ -100,7 +102,7 @@ const [RoleModal, roleModalApi] = useVbenModal({
});
const onRefresh = () => {
nextTick(query);
return nextTick(query);
};
const onDelete = (row: IdentityRoleDto) => {
@ -109,11 +111,17 @@ const onDelete = (row: IdentityRoleDto) => {
content: $t('AbpIdentity.OrganizationUnit:AreYouSureRemoveRole', [
row.name,
]),
onOk: () => {
setLoading(true);
return removeOrganizationUnitApi(row.id, props.selectedKey!)
.then(onRefresh)
.finally(() => setLoading(false));
onCancel: () => {
cancel('User closed cancel delete modal.');
},
onOk: async () => {
try {
setLoading(true);
await removeOrganizationUnitApi(row.id, props.selectedKey!);
await onRefresh();
} finally {
setLoading(false);
}
},
title: $t('AbpUi.AreYouSure'),
});
@ -126,24 +134,23 @@ const onShowRole = () => {
roleModalApi.open();
};
const onCreateRole = (roles: IdentityRoleDto[]) => {
roleModalApi.setState({
closable: false,
confirmLoading: true,
});
addRoles(props.selectedKey!, {
roleIds: roles.map((item) => item.id),
})
.then(() => {
roleModalApi.close();
query();
})
.finally(() => {
roleModalApi.setState({
closable: true,
confirmLoading: false,
});
const onCreateRole = async (roles: IdentityRoleDto[]) => {
try {
roleModalApi.setState({
closable: false,
confirmLoading: true,
});
await addRoles(props.selectedKey!, {
roleIds: roles.map((item) => item.id),
});
roleModalApi.close();
await query();
} finally {
roleModalApi.setState({
closable: true,
confirmLoading: false,
});
}
};
watch(() => props.selectedKey, onRefresh);
</script>

15
apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitTree.vue

@ -29,13 +29,7 @@ import {
Tree,
} from 'ant-design-vue';
import {
deleteApi,
getApi,
getChildrenApi,
getRootListApi,
moveTo,
} from '../../api/organization-units';
import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi';
defineOptions({
name: 'OrganizationUnitTree',
@ -45,6 +39,9 @@ const emits = defineEmits<{
(event: 'selected', id?: string): void;
}>();
const { deleteApi, getApi, getChildrenApi, getRootListApi, moveTo } =
useOrganizationUnitsApi();
const MenuItem = Menu.Item;
const PermissionsOutlined = createIconifyIcon('icon-park-outline:permissions');
const OrganizationUnitModal = defineAsyncComponent(
@ -169,9 +166,9 @@ function onDrop(info: AntTreeNodeDropEvent) {
const eventKey = String(info.dragNode.eventKey);
const api =
info.dropPosition === -1
? moveTo(eventKey) // parent
? moveTo(eventKey, undefined) // parent
: moveTo(eventKey, String(info.node.eventKey)); // children
api.then(() => onRefresh());
api.then(onRefresh);
}
onMounted(onRefresh);

9
apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitUserTable.vue

@ -13,8 +13,8 @@ import { useVbenVxeGrid } from '@abp/ui';
import { DeleteOutlined, PlusOutlined } from '@ant-design/icons-vue';
import { Button, Modal } from 'ant-design-vue';
import { addMembers, getUserListApi } from '../../api/organization-units';
import { removeOrganizationUnitApi } from '../../api/users';
import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi';
import { useUserApi } from '../../api/useUsersApi';
import { OrganizationUnitPermissions } from '../../constants/permissions';
defineOptions({
@ -24,6 +24,8 @@ defineOptions({
const props = defineProps<{
selectedKey?: string;
}>();
const { cancel, removeOrganizationUnitApi } = useUserApi();
const { addMembers, getUserListApi } = useOrganizationUnitsApi();
const SelectMemberModal = defineAsyncComponent(
() => import('./SelectMemberModal.vue'),
@ -111,6 +113,9 @@ const onDelete = (row: IdentityUserDto) => {
content: $t('AbpIdentity.OrganizationUnit:AreYouSureRemoveUser', [
row.userName,
]),
onCancel: () => {
cancel('User closed cancel delete modal.');
},
onOk: () => {
setLoading(true);
return removeOrganizationUnitApi(row.id, props.selectedKey!)

6
apps/vben5/packages/@abp/identity/src/components/organization-units/SelectMemberModal.vue

@ -10,7 +10,7 @@ import { $t } from '@vben/locales';
import { useVbenVxeGrid } from '@abp/ui';
import { getUnaddedUserListApi } from '../../api/organization-units';
import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi';
defineOptions({
name: 'SelectMemberModal',
@ -18,6 +18,7 @@ defineOptions({
const emits = defineEmits<{
(event: 'confirm', items: IdentityUserDto[]): void;
}>();
const { cancel, getUnaddedUserListApi } = useOrganizationUnitsApi();
const selectedUsers = ref<IdentityUserDto[]>([]);
@ -52,6 +53,9 @@ const [Modal, modalApi] = useVbenModal({
onCancel() {
modalApi.close();
},
onClosed() {
cancel();
},
onConfirm: async () => {
emits('confirm', toValue(selectedUsers));
},

6
apps/vben5/packages/@abp/identity/src/components/organization-units/SelectRoleModal.vue

@ -12,7 +12,7 @@ import {
type VxeGridProps,
} from '@abp/ui';
import { getUnaddedRoleListApi } from '../../api/organization-units';
import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi';
defineOptions({
name: 'SelectRoleModal',
@ -20,6 +20,7 @@ defineOptions({
const emits = defineEmits<{
(event: 'confirm', items: IdentityRoleDto[]): void;
}>();
const { cancel, getUnaddedRoleListApi } = useOrganizationUnitsApi();
const selectedRoles = ref<IdentityRoleDto[]>([]);
@ -54,6 +55,9 @@ const [Modal, modalApi] = useVbenModal({
onCancel() {
modalApi.close();
},
onClosed() {
cancel();
},
onConfirm: async () => {
emits('confirm', toValue(selectedRoles));
},

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

@ -11,12 +11,7 @@ import { defineAsyncComponent } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import {
createClaimApi,
deleteClaimApi,
getClaimsApi,
updateClaimApi,
} from '../../api/roles';
import { useRolesApi } from '../../api/useRolesApi';
import { IdentityRolePermissions } from '../../constants/permissions';
defineOptions({
@ -27,12 +22,17 @@ const ClaimTable = defineAsyncComponent(
() => import('../claims/ClaimTable.vue'),
);
const { cancel, createClaimApi, deleteClaimApi, getClaimsApi, updateClaimApi } =
useRolesApi();
const [Modal, modalApi] = useVbenModal({
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onClosed() {
cancel('Role Claim modal has closed!');
},
onConfirm: async () => {},
showCancelButton: false,
showConfirmButton: false,

6
apps/vben5/packages/@abp/identity/src/components/roles/RoleModal.vue

@ -10,7 +10,7 @@ import { $t } from '@vben/locales';
import { Checkbox, Form, Input, message } from 'ant-design-vue';
import { createApi, getApi, updateApi } from '../../api/roles';
import { useRolesApi } from '../../api/useRolesApi';
defineOptions({
name: 'RoleModal',
@ -30,12 +30,16 @@ const defaultModel = {
const form = ref<FormInstance>();
const formModel = ref<IdentityRoleDto>({ ...defaultModel });
const { cancel, createApi, getApi, updateApi } = useRolesApi();
const [Modal, modalApi] = useVbenModal({
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onClosed() {
cancel('Role modal has closed!');
},
onConfirm: async () => {
await form.value?.validate();
const api = formModel.value.id

7
apps/vben5/packages/@abp/identity/src/components/roles/RoleTable.vue

@ -22,7 +22,7 @@ import {
} from '@ant-design/icons-vue';
import { Button, Dropdown, Menu, message, Modal, Tag } from 'ant-design-vue';
import { deleteApi, getPagedListApi } from '../../api/roles';
import { useRolesApi } from '../../api/useRolesApi';
import { IdentityRolePermissions } from '../../constants/permissions';
defineOptions({
@ -39,6 +39,8 @@ const RoleModal = defineAsyncComponent(() => import('./RoleModal.vue'));
const ClaimModal = defineAsyncComponent(() => import('./RoleClaimModal.vue'));
const abpStore = useAbpStore();
const { hasAccessByCodes } = useAccess();
const { cancel, deleteApi, getPagedListApi } = useRolesApi();
const [RolePermissionModal, permissionModalApi] = useVbenModal({
connectedComponent: PermissionModal,
});
@ -134,6 +136,9 @@ const handleDelete = (row: IdentityRoleDto) => {
Modal.confirm({
centered: true,
content: $t('AbpIdentity.RoleDeletionConfirmationMessage', [row.name]),
onCancel: () => {
cancel('User closed cancel delete modal.');
},
onOk: async () => {
await deleteApi(row.id);
message.success($t('AbpUi.SuccessfullyDeleted'));

7
apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogDrawer.vue

@ -9,7 +9,7 @@ import { $t } from '@vben/locales';
import { formatToDateTime } from '@abp/core';
import { Descriptions } from 'ant-design-vue';
import { getApi } from '../../api/security-logs';
import { useSecurityLogsApi } from '../../api/useSecurityLogsApi';
defineOptions({
name: 'SecurityLogDrawer',
@ -19,8 +19,13 @@ const DescriptionsItem = Descriptions.Item;
const formModel = ref<SecurityLogDto>({} as SecurityLogDto);
const { cancel, getApi } = useSecurityLogsApi();
const [Drawer, drawerApi] = useVbenDrawer({
class: 'w-auto',
onBeforeClose() {
cancel('Security log drawer has closed!');
},
onCancel() {
drawerApi.close();
},

7
apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue

@ -13,13 +13,14 @@ import { useVbenVxeGrid } from '@abp/ui';
import { DeleteOutlined, EditOutlined } from '@ant-design/icons-vue';
import { Button, message, Modal, Tag } from 'ant-design-vue';
import { deleteApi, getPagedListApi } from '../../api/security-logs';
import { useSecurityLogsApi } from '../../api/useSecurityLogsApi';
import { SecurityLogPermissions } from '../../constants/permissions';
defineOptions({
name: 'SecurityLogTable',
});
const { cancel, deleteApi, getPagedListApi } = useSecurityLogsApi();
const formOptions: VbenFormProps = {
//
collapsed: false,
@ -182,6 +183,7 @@ const gridOptions: VxeGridProps<SecurityLogDto> = {
const gridEvents: VxeGridListeners<SecurityLogDto> = {
sortChange: onSort,
};
const [Grid, gridApi] = useVbenVxeGrid({
formOptions,
gridEvents,
@ -202,6 +204,9 @@ function onDelete(row: SecurityLogDto) {
Modal.confirm({
centered: true,
content: $t('AbpUi.ItemWillBeDeletedMessage'),
onCancel: () => {
cancel('User closed cancel delete modal.');
},
onOk: async () => {
await deleteApi(row.id);
message.success($t('AbpUi.SuccessfullyDeleted'));

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

@ -11,12 +11,7 @@ import { defineAsyncComponent } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';
import {
createClaimApi,
deleteClaimApi,
getClaimsApi,
updateClaimApi,
} from '../../api/users';
import { useUserApi } from '../../api/useUsersApi';
import { IdentityUserPermissions } from '../../constants/permissions';
defineOptions({
@ -27,13 +22,17 @@ const ClaimTable = defineAsyncComponent(
() => import('../claims/ClaimTable.vue'),
);
const { cancel, createClaimApi, deleteClaimApi, getClaimsApi, updateClaimApi } =
useUserApi();
const [Modal, modalApi] = useVbenModal({
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onConfirm: async () => {},
onClosed() {
cancel('User claim modal has closed!');
},
showCancelButton: false,
showConfirmButton: false,
title: $t('AbpIdentity.ManageClaim'),

6
apps/vben5/packages/@abp/identity/src/components/users/UserLockModal.vue

@ -5,7 +5,7 @@ import { $t } from '@vben/locales';
import { useVbenForm } from '@abp/ui';
import { lockApi } from '../../api/users';
import { useUserApi } from '../../api/useUsersApi';
defineOptions({
name: 'UserLockModal',
@ -23,6 +23,7 @@ enum LockType {
Years = 32_140_800, // 31*12
}
const { cancel, lockApi } = useUserApi();
const [Form, formApi] = useVbenForm({
commonConfig: {
//
@ -77,6 +78,9 @@ const [Modal, modalApi] = useVbenModal({
onCancel() {
modalApi.close();
},
onClosed() {
cancel('User lock modal has closed!');
},
onConfirm: async () => {
await formApi.validateAndSubmitForm();
},

40
apps/vben5/packages/@abp/identity/src/components/users/UserModal.vue

@ -23,15 +23,8 @@ import {
Tree,
} from 'ant-design-vue';
import { getChildrenApi, getRootListApi } from '../../api/organization-units';
import {
createApi,
getApi,
getAssignableRolesApi,
getOrganizationUnitsApi,
getRolesApi,
updateApi,
} from '../../api/users';
import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi';
import { useUserApi } from '../../api/useUsersApi';
defineOptions({
name: 'UserModal',
@ -62,12 +55,25 @@ const formModel = ref<IdentityUserDto>({ ...defaultModel });
const { isTrue } = useSettings();
const { hasAccessByCodes } = useAccess();
const {
cancel,
createApi,
getApi,
getAssignableRolesApi,
getOrganizationUnitsApi,
getRolesApi,
updateApi,
} = useUserApi();
const { getChildrenApi, getRootListApi } = useOrganizationUnitsApi();
const [Modal, modalApi] = useVbenModal({
draggable: true,
fullscreenButton: false,
onCancel() {
modalApi.close();
},
onClosed() {
cancel('User modal has closed!');
},
onConfirm: async () => {
await form.value?.validate();
const api = formModel.value.id
@ -99,12 +105,16 @@ const [Modal, modalApi] = useVbenModal({
const userDto = modalApi.getData<IdentityUserDto>();
const manageRolePolicy = checkManageRolePolicy();
if (userDto?.id) {
await initUserInfo(userDto.id);
manageRolePolicy && (await initUserRoles(userDto.id));
checkManageOuPolicy() && (await initOrganizationUnitTree(userDto.id));
await Promise.all([
initUserInfo(userDto.id),
manageRolePolicy && initUserRoles(userDto.id),
manageRolePolicy && initAssignableRoles(),
checkManageOuPolicy() && initOrganizationUnitTree(userDto.id),
]);
modalApi.setState({
title: `${$t('AbpIdentity.Users')} - ${userDto.userName}`,
});
return;
}
manageRolePolicy && (await initAssignableRoles());
} finally {
@ -165,7 +175,10 @@ async function initAssignableRoles() {
* @param userId 用户id
*/
async function initOrganizationUnitTree(userId: string) {
const ouResult = await getRootListApi();
const [ouResult, userOuResult] = await Promise.all([
getRootListApi(),
getOrganizationUnitsApi(userId),
]);
organizationUnits.value = ouResult.items.map((item) => {
return {
isLeaf: false,
@ -174,7 +187,6 @@ async function initOrganizationUnitTree(userId: string) {
children: [],
};
});
const userOuResult = await getOrganizationUnitsApi(userId);
checkedOuKeys.value = userOuResult.items.map((item) => item.id);
}

6
apps/vben5/packages/@abp/identity/src/components/users/UserPasswordModal.vue

@ -7,7 +7,7 @@ import { $t } from '@vben/locales';
import { Button, message } from 'ant-design-vue';
import { changePasswordApi } from '../../api/users';
import { useUserApi } from '../../api/useUsersApi';
import { useRandomPassword } from '../../hooks';
defineOptions({
@ -18,6 +18,7 @@ const emits = defineEmits<{
}>();
const { generatePassword } = useRandomPassword();
const { cancel, changePasswordApi } = useUserApi();
const [Form, formApi] = useVbenForm({
commonConfig: {
@ -62,6 +63,9 @@ const [Modal, modalApi] = useVbenModal({
onCancel() {
modalApi.close();
},
onClosed() {
cancel('User password modal has closed!');
},
onConfirm: async () => {
try {
modalApi.setState({ confirmLoading: true });

6
apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue

@ -25,7 +25,7 @@ import {
} from '@ant-design/icons-vue';
import { Button, Dropdown, Menu, message, Modal } from 'ant-design-vue';
import { deleteApi, getPagedListApi, unLockApi } from '../../api/users';
import { useUserApi } from '../../api/useUsersApi';
import { IdentityUserPermissions } from '../../constants/permissions';
defineOptions({
@ -64,6 +64,7 @@ const getLockEnd = computed(() => {
const abpStore = useAbpStore();
const { hasAccessByCodes } = useAccess();
const { cancel, deleteApi, getPagedListApi, unLockApi } = useUserApi();
const formOptions: VbenFormProps = {
//
@ -184,6 +185,9 @@ const handleDelete = (row: IdentityUserDto) => {
Modal.confirm({
centered: true,
content: $t('AbpIdentity.UserDeletionConfirmationMessage', [row.userName]),
onCancel: () => {
cancel('User closed cancel delete modal.');
},
onOk: async () => {
await deleteApi(row.id);
message.success($t('AbpUi.SuccessfullyDeleted'));

4
apps/vben5/packages/@abp/request/package.json

@ -22,6 +22,8 @@
"dependencies": {
"@abp/core": "workspace:*",
"@vben/hooks": "workspace:*",
"@vben/request": "workspace:*"
"@vben/request": "workspace:*",
"axios": "catalog:",
"vue": "catalog:"
}
}

1
apps/vben5/packages/@abp/request/src/hooks/index.ts

@ -0,0 +1 @@
export * from './useRequest';

60
apps/vben5/packages/@abp/request/src/hooks/useRequest.ts

@ -0,0 +1,60 @@
import type { AxiosRequestConfig } from 'axios';
import { onUnmounted } from 'vue';
import { requestClient } from '@abp/request';
type HttpMethod =
| 'CONNECT'
| 'DELETE'
| 'GET'
| 'HEAD'
| 'OPTIONS'
| 'PATCH'
| 'POST'
| 'PURGE'
| 'PUT'
| 'TRACE';
interface RequestConfig extends AxiosRequestConfig {
method: HttpMethod;
}
interface RequestLifeCycle {
/** 是否自动销毁令牌 */
autoDestroy?: boolean;
}
export function useRequest(options?: RequestLifeCycle) {
const controllers = new Set<AbortController>();
function request<T>(url: string, config: RequestConfig): Promise<T> {
const controller = new AbortController();
controllers.add(controller);
return requestClient
.request<T>(url, {
...config,
signal: controller.signal,
})
.finally(() => {
controllers.delete(controller);
});
}
function cancel(message?: string) {
controllers.forEach((controller) => controller.abort(message));
controllers.clear();
}
onUnmounted(() => {
if (options?.autoDestroy === false) {
return;
}
cancel('The Component has Unmounted!');
});
return {
cancel,
request,
};
}

3
apps/vben5/packages/@abp/request/src/index.ts

@ -5,6 +5,9 @@
import { useAppConfig } from '@vben/hooks';
import { RequestClient } from '@vben/request';
export * from './hooks';
export * from './types';
const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD);
function createRequestClient(baseURL: string) {

1
apps/vben5/packages/@abp/request/src/types/index.ts

@ -0,0 +1 @@
export type { CancelToken as CancellationToken } from 'axios';
Loading…
Cancel
Save