@alauda-fe/common
Version:
Alauda frontend team common codes.
81 lines (80 loc) • 5.46 kB
TypeScript
/**
* @packageDocumentation
* @module permission
*/
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { K8sApiResourceService } from '../api/public-api';
import { IfEqual, K8sResourceAction, KubernetesResource, SelfSubjectAccessReview } from '../core/public-api';
import { AllPermissions, K8sPermissionTransformable, K8sResourcePermissionMultiParams, K8sResourcePermissionNoneParams, K8sResourcePermissionSingleParams, K8sTypePermissionActionsParams, K8sTypePermissionMatrixParams, K8sTypePermissionMultiParams, K8sTypePermissionNamesParams, K8sTypePermissionNoneParams, K8sTypePermissionSingleParams } from './types';
import * as i0 from "@angular/core";
export declare class K8sPermissionService {
private readonly http;
private readonly k8sApiResource;
constructor(http: HttpClient, k8sApiResource: K8sApiResourceService);
/**
* 获取对 K8s 资源的操作权限,一般和 isAllowed 配合使用
*/
/**
* 根据已有 K8s 资源,不传入 action 或为 null 时默认取 get 操作权限
*/
getAccess<K extends KubernetesResource, T extends K8sResourceAction = K8sResourceAction.GET>(params: K8sResourcePermissionNoneParams<K>): Observable<SelfSubjectAccessReview<T>>;
/**
* 根据已有 K8s 资源,进行单个指定 action 操作权限
*/
getAccess<T extends K8sResourceAction, K extends KubernetesResource>(params: K8sResourcePermissionSingleParams<K, T>): Observable<SelfSubjectAccessReview<T>>;
/**
* 根据已有 K8s 资源,进行多个指定 action 操作权限列表
*/
getAccess<T extends K8sResourceAction, K extends KubernetesResource>(params: K8sResourcePermissionMultiParams<K, T>): Observable<Array<SelfSubjectAccessReview<T>>>;
/**
* 根据 K8s 资源类型,不传入 action 或为 null 时默认取 list 操作权限
*/
getAccess(params: K8sTypePermissionNoneParams): Observable<SelfSubjectAccessReview<K8sResourceAction.LIST>>;
/**
* 根据 K8s 资源类型和名称进行单个指定 action 操作权限,默认取 get 操作权限
*/
getAccess<T extends K8sResourceAction = K8sResourceAction.GET>(params: K8sTypePermissionSingleParams<T>): Observable<SelfSubjectAccessReview<T>>;
/**
* 根据 K8s 资源类型,进行多个指定 action 操作或者多个名称的权限列表
*/
getAccess<T extends K8sResourceAction>(params: K8sTypePermissionMultiParams<T>): Observable<Array<SelfSubjectAccessReview<T>>>;
/**
* 根据 K8s 资源类型,进行多个指定 action 操作和多个名称的权限二位数组列表
*/
getAccess<T extends K8sResourceAction>(params: K8sTypePermissionMatrixParams<T>): Observable<Array<Array<SelfSubjectAccessReview<T>>>>;
/**
* 根据已经获取到的操作权限对象或列表转化为更方便使用的权限 record 或数组
*/
/**
* 根据已有 K8s 资源,不传入 action 或为 null 时转化为 boolean
*/
isAllowed<T extends K8sResourceAction, K extends KubernetesResource>(params: K8sResourcePermissionNoneParams<K> | K8sResourcePermissionSingleParams<K, T>): Observable<boolean>;
/**
* 根据已有 K8s 资源,多个 action 默认转为 record,`transform === false` 时转为 `boolean[]`
*/
isAllowed<T extends K8sResourceAction, K extends KubernetesResource, R extends boolean = true>(params: K8sResourcePermissionMultiParams<K, T> & Partial<K8sPermissionTransformable<R>>): Observable<IfEqual<R, false, boolean[], Record<T, boolean>>>;
/**
* 根据 K8s 资源类型,不传入 action/name 或为 null 时,默认取 get 权限,自动转化为 boolean,`transform !== false` 时转化为 record
*/
isAllowed<T extends K8sResourceAction = K8sResourceAction.GET, K extends boolean = false>(params: K8sTypePermissionNoneParams & Partial<K8sPermissionTransformable<K>>): Observable<IfEqual<K, false, boolean, Record<T, boolean>>>;
/**
* 根据 K8s 资源类型,传入单个 action 或 name 时,`action === ALL(*)` 时自动转化为所有权限的 record,否则转化为 `boolean`
*/
isAllowed<T extends K8sResourceAction>(params: K8sTypePermissionSingleParams<T>): Observable<IfEqual<T, K8sResourceAction.ALL, AllPermissions, boolean>>;
/**
* 根据 K8s 资源类型,传入单个 action 或 name 时,自动转化为 record,`transform === false` 时转化为 `boolean`
*/
isAllowed<T extends K8sResourceAction, K extends boolean>(params: K8sTypePermissionSingleParams<T> & K8sPermissionTransformable<K>): Observable<IfEqual<K, false, boolean, IfEqual<T, K8sResourceAction.ALL, AllPermissions, Record<T, boolean>>>>;
/**
* 根据 K8s 资源类型,传入多个 action 时,自动转化为 record,`transform === false` 时转化为 `boolean[]`
*/
isAllowed<T extends K8sResourceAction, K extends boolean = true>(params: K8sTypePermissionActionsParams<T> & Partial<K8sPermissionTransformable<K>>): Observable<IfEqual<K, false, boolean[], Record<T, boolean>>>;
/**
* 根据 K8s 资源类型,传入多个 name 时,自动转化为 `boolean[]`
*/
isAllowed<T extends K8sResourceAction>(params: K8sTypePermissionNamesParams<T>): Observable<boolean[]>;
private _getAccess;
static ɵfac: i0.ɵɵFactoryDeclaration<K8sPermissionService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<K8sPermissionService>;
}