@alauda-fe/common
Version:
Alauda frontend team common codes.
84 lines (83 loc) • 4.76 kB
TypeScript
/**
* @packageDocumentation
* @module permission
*/
import { K8sResourceDefinition } from '../api/types';
import { AnyArray, K8sResourceAction, KubernetesResource } from '../core/types/public-api';
export declare const READABLE_ACTIONS: readonly [K8sResourceAction.GET, K8sResourceAction.LIST, K8sResourceAction.PROXY, K8sResourceAction.REDIRECT, K8sResourceAction.WATCH];
export declare const WRITABLE_ACTIONS: readonly [K8sResourceAction.CREATE, K8sResourceAction.DELETE, K8sResourceAction.DELETE_COLLECTION, K8sResourceAction.PATCH, K8sResourceAction.UPDATE];
export declare const COMMON_READABLE_ACTIONS: readonly [K8sResourceAction.GET];
export declare const COMMON_WRITABLE_ACTIONS: readonly [K8sResourceAction.CREATE, K8sResourceAction.DELETE, K8sResourceAction.UPDATE];
export declare const ALL_ACTIONS: readonly [K8sResourceAction.CREATE, K8sResourceAction.DELETE, K8sResourceAction.DELETE_COLLECTION, K8sResourceAction.GET, K8sResourceAction.LIST, K8sResourceAction.PATCH, K8sResourceAction.PROXY, K8sResourceAction.REDIRECT, K8sResourceAction.UPDATE, K8sResourceAction.WATCH];
export type ReadablePermissions = Readonly<Record<(typeof READABLE_ACTIONS)[number], boolean>>;
export type WritablePermissions = Readonly<Record<(typeof WRITABLE_ACTIONS)[number], boolean>>;
export type CommonReadablePermissions = Readonly<Record<(typeof COMMON_READABLE_ACTIONS)[number], boolean>>;
export type CommonWritablePermissions = Readonly<Record<(typeof COMMON_WRITABLE_ACTIONS)[number], boolean>>;
export type AllPermissions = Readonly<Record<(typeof ALL_ACTIONS)[number] | 'all', boolean>>;
export interface K8sPermissionBaseParams {
advanced?: boolean;
project?: string;
}
interface K8sTypePermissionVariantByType {
type: string | K8sResourceDefinition;
definition?: never;
}
interface K8sTypePermissionVariantByDefinition {
type?: never;
definition: K8sResourceDefinition;
}
type K8sTypePermissionVariant = K8sTypePermissionVariantByType | K8sTypePermissionVariantByDefinition;
export type K8sTypePermissionBaseParams = K8sPermissionBaseParams & K8sTypePermissionVariant & {
subResource?: string;
cluster?: string;
namespace?: string;
};
export type K8sTypePermissionNoneParams = K8sTypePermissionBaseParams & {
action?: null;
name?: null;
};
export type K8sTypePermissionSingleParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & ({
action: T;
name?: string;
} | {
action?: T;
name: string;
});
export type K8sTypePermissionActionsParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & {
action: AnyArray<T>;
name?: string;
};
export type K8sTypePermissionNamesParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & {
action?: T;
name: AnyArray<string>;
};
export type K8sTypePermissionMultiParams<T extends K8sResourceAction> = K8sTypePermissionActionsParams<T> | K8sTypePermissionNamesParams<T>;
export type K8sTypePermissionMatrixParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & {
action: AnyArray<T>;
name: AnyArray<string>;
};
export type K8sTypePermissionParams<T extends K8sResourceAction> = K8sTypePermissionNoneParams | K8sTypePermissionSingleParams<T> | K8sTypePermissionMultiParams<T> | K8sTypePermissionMatrixParams<T>;
export interface K8sPermissionTransformable<T extends boolean> {
transform: T;
}
export type K8sTypePermissionWithTransformParams<T extends K8sResourceAction, K extends boolean> = K8sTypePermissionParams<T> & Partial<K8sPermissionTransformable<K>>;
export interface K8sResourcePermissionBaseParams<T extends KubernetesResource> extends K8sPermissionBaseParams {
cluster: string;
resource: T;
}
export interface K8sResourcePermissionNoneParams<T extends KubernetesResource> extends K8sResourcePermissionBaseParams<T> {
action?: null;
}
export interface K8sResourcePermissionSingleParams<T extends KubernetesResource, K extends K8sResourceAction> extends K8sResourcePermissionBaseParams<T> {
action: K;
}
export interface K8sResourcePermissionMultiParams<T extends KubernetesResource, K extends K8sResourceAction> extends K8sResourcePermissionBaseParams<T> {
action: AnyArray<K>;
}
export type K8sResourcePermissionParams<T extends KubernetesResource, K extends K8sResourceAction> = K8sResourcePermissionNoneParams<T> | K8sResourcePermissionSingleParams<T, K> | K8sResourcePermissionMultiParams<T, K>;
export type K8sResourcePermissionWithTransformParams<T extends KubernetesResource, K extends K8sResourceAction, R extends boolean> = K8sResourcePermissionParams<T, K> & Partial<K8sPermissionTransformable<R>>;
export interface PermissionGuardData {
/** 参数的读取是否优先读取子级路由(递归) */
childFirst?: boolean;
}
export {};