import { defHttp } from '#/api/request';
|
|
export type DmsAction = 'CREATE' | 'DELETE' | 'READ' | 'UPDATE';
|
export type DmsPrincipalType = 'GROUP' | 'ORG' | 'POSITION' | 'ROLE' | 'USER';
|
export type DmsResourceScope = 'SELF' | 'SUBTREE';
|
export type DmsResourceType = 'DOCUMENT' | 'FILE_VERSION' | 'FOLDER';
|
export type DmsSourceType = 'MANUAL' | 'MIGRATION' | 'SYSTEM' | 'WORKFLOW';
|
export type DmsAccessExclusionStatus = 'ACTIVE' | 'EXPIRED' | 'PENDING' | 'REVOKED';
|
|
export interface DmsApiResult<T> {
|
code: number;
|
data: T;
|
msg?: string;
|
}
|
|
export interface DmsCursorPage<T> {
|
hasMore: boolean;
|
list: T[];
|
nextCursor?: string;
|
}
|
|
export interface DmsPermissionResource {
|
checksumSha256?: string;
|
createdAt: string;
|
documentId?: string;
|
documentName?: string;
|
documentNo?: string;
|
effectiveFrom?: string;
|
effectiveTo?: string;
|
fileName?: string;
|
id: string;
|
lifecycleStatus?: 'EFFECTIVE' | 'EXPIRED' | 'INVALIDATED' | 'OBSOLETE' | 'PENDING_EFFECTIVE' | 'REVOKED' | 'SUPERSEDED';
|
mimeType?: string;
|
name: string;
|
parentId?: string;
|
resourceType: DmsResourceType;
|
sizeBytes?: number;
|
sourceId: string;
|
sourceType: string;
|
versionLabel?: string;
|
versionNo?: number;
|
}
|
|
export interface DmsPermissionGrant {
|
actionCode: DmsAction;
|
createdAt: string;
|
grantReason?: string;
|
id: string;
|
includeChildOrgs: boolean;
|
inherited: boolean;
|
maxUseCount?: number;
|
principalId: string;
|
principalName?: string;
|
principalType: DmsPrincipalType;
|
remainingUseCount?: number;
|
resourceId: string;
|
resourceScope: DmsResourceScope;
|
resourceType: DmsResourceType;
|
revokeReason?: string;
|
revokedAt?: string;
|
revision: number;
|
sourceId: string;
|
sourceType: DmsSourceType;
|
status: 'ACTIVE' | 'EXHAUSTED' | 'EXPIRED' | 'PENDING' | 'REVOKED';
|
updatedAt: string;
|
usedCount: number;
|
validFrom: string;
|
validTo?: string;
|
}
|
|
export interface DmsPermissionUsage {
|
actionCode: DmsAction;
|
actualResourceId: string;
|
actualResourceType: DmsResourceType;
|
id: number;
|
operationId: string;
|
permissionId: string;
|
sessionExpiresAt?: string;
|
usedAt: string;
|
userId: string;
|
}
|
|
export interface DmsAccessExclusion {
|
actionCode: 'READ';
|
createdAt: string;
|
excludeReason?: string;
|
excludedById: string;
|
excludedByType: string;
|
id: string;
|
resourceId: string;
|
resourceType: Exclude<DmsResourceType, 'FOLDER'>;
|
revokeReason?: string;
|
revokedAt?: string;
|
revokedById?: string;
|
revokedByType?: string;
|
revision: number;
|
sourceId: string;
|
sourceType: DmsSourceType;
|
status: DmsAccessExclusionStatus;
|
updatedAt: string;
|
userId: string;
|
userName?: string;
|
validFrom: string;
|
validTo?: string;
|
}
|
|
export interface DmsAccessExclusionItem {
|
excludeReason?: string;
|
resourceId: string;
|
resourceType: Exclude<DmsResourceType, 'FOLDER'>;
|
userId: string;
|
validFrom?: string;
|
validTo?: string;
|
}
|
|
export interface DmsAccessExclusionBatch {
|
items: DmsAccessExclusionItem[];
|
sourceId: string;
|
sourceType: DmsSourceType;
|
}
|
|
export interface DmsFolderCreate {
|
name: string;
|
parentId: string;
|
sourceId: string;
|
}
|
|
export interface DmsPrincipalOption {
|
id: string;
|
name: string;
|
}
|
|
export interface DmsGrantItem {
|
actionCode: DmsAction;
|
grantReason?: string;
|
includeChildOrgs: boolean;
|
maxUseCount?: number;
|
principalId: string;
|
principalType: DmsPrincipalType;
|
resourceId: string;
|
resourceScope: DmsResourceScope;
|
resourceType: DmsResourceType;
|
validFrom?: string;
|
validTo?: string;
|
}
|
|
export interface DmsGrantBatch {
|
items: DmsGrantItem[];
|
sourceId: string;
|
sourceType: DmsSourceType;
|
}
|
|
const prefix = '/api/dms';
|
const silentErrorOptions = { errorMessageMode: 'none' as const };
|
|
export function getPermissionAdminCapabilities() {
|
return defHttp.get<DmsApiResult<{ permissionAdministrator: boolean }>>({ url: `${prefix}/permission-admin/capabilities` }, silentErrorOptions);
|
}
|
|
export function getPermissionResources(params: { cursor?: string; pageSize?: number; resourceType?: DmsResourceType }) {
|
return defHttp.get<DmsApiResult<DmsCursorPage<DmsPermissionResource>>>({ url: `${prefix}/permission-resources`, params }, silentErrorOptions);
|
}
|
|
export function getPermissionResourceTree(params: { pageSize?: number; parentId?: string }) {
|
return defHttp.get<DmsApiResult<DmsPermissionResource[]>>({ url: `${prefix}/permission-resources/tree`, params }, silentErrorOptions);
|
}
|
|
export function getPermissionResource(id: string) {
|
return defHttp.get<DmsApiResult<DmsPermissionResource>>({ url: `${prefix}/permission-resources/${id}` }, silentErrorOptions);
|
}
|
|
export function createDmsFolder(data: DmsFolderCreate) {
|
return defHttp.post<DmsApiResult<DmsPermissionResource>>({ url: `${prefix}/folders`, data }, silentErrorOptions);
|
}
|
|
export function getResourceGrants(id: string) {
|
return defHttp.get<DmsApiResult<DmsPermissionGrant[]>>({ url: `${prefix}/permission-resources/${id}/grants` }, silentErrorOptions);
|
}
|
|
export function createPermissionGrant(data: DmsGrantBatch) {
|
return defHttp.post<DmsApiResult<DmsPermissionGrant[]>>({ url: `${prefix}/permission-grants`, data }, silentErrorOptions);
|
}
|
|
export function getPermissionGrant(id: string) {
|
return defHttp.get<DmsApiResult<DmsPermissionGrant>>({ url: `${prefix}/permission-grants/${id}` }, silentErrorOptions);
|
}
|
|
export function revokePermissionGrants(data: { permissionIds: string[]; reason: string }) {
|
return defHttp.post<DmsApiResult<DmsPermissionGrant[]>>({ url: `${prefix}/permission-grants/revoke`, data }, silentErrorOptions);
|
}
|
|
export function getPermissionUsages(id: string, pageSize = 100) {
|
return defHttp.get<DmsApiResult<DmsPermissionUsage[]>>({ url: `${prefix}/permission-grants/${id}/usages`, params: { pageSize } }, silentErrorOptions);
|
}
|
|
export function getAccessExclusions(params: { cursor?: string; pageSize?: number; resourceId?: string; userId?: string }) {
|
return defHttp.get<DmsApiResult<DmsCursorPage<DmsAccessExclusion>>>({ url: `${prefix}/access-exclusions`, params }, silentErrorOptions);
|
}
|
|
export function createAccessExclusions(data: DmsAccessExclusionBatch) {
|
return defHttp.post<DmsApiResult<DmsAccessExclusion[]>>({ url: `${prefix}/access-exclusions`, data }, silentErrorOptions);
|
}
|
|
export function revokeAccessExclusions(data: { exclusionIds: string[]; reason: string }) {
|
return defHttp.post<DmsApiResult<DmsAccessExclusion[]>>({ url: `${prefix}/access-exclusions/revoke`, data }, silentErrorOptions);
|
}
|
|
export function getPermissionGroups(params: { keyword?: string; pageSize?: number }) {
|
return defHttp.get<DmsApiResult<DmsPrincipalOption[]>>({ url: `${prefix}/permission-principals/groups`, params }, silentErrorOptions);
|
}
|