@alauda-fe/common
Version:
Alauda frontend team common codes.
40 lines • 5.8 kB
JavaScript
/**
* @packageDocumentation
* @module permission
*/
import { pipe, map, startWith } from 'rxjs';
import { K8sResourceAction, publishRef, } from '../core/public-api';
import { ALL_ACTIONS } from './types';
// eslint-disable-next-line sonarjs/cognitive-complexity
export function isAllowed(transform = true) {
const operators = [
map((access) => {
if (!transform) {
return Array.isArray(access)
? access.map(acc => acc.status.allowed)
: access.status.allowed;
}
return (Array.isArray(access) ? access : [access]).reduce((acc, item) => {
const { verb } = item.spec.resourceAttributes;
const { allowed } = item.status;
if (verb === K8sResourceAction.ALL) {
for (const action of ALL_ACTIONS) {
acc[action] = allowed;
}
// @ts-expect-error
acc.all = allowed;
}
else {
acc[verb] = allowed;
}
return acc;
}, {});
}),
publishRef(),
];
if (transform) {
operators.splice(1, 0, startWith({}));
}
return pipe(...operators);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9wZXJtaXNzaW9uL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUE0QixJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBR0wsaUJBQWlCLEVBR2pCLFVBQVUsR0FDWCxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFxQnRDLHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJO0lBQ3hDLE1BQU0sU0FBUyxHQUdYO1FBQ0YsR0FBRyxDQUFDLENBQUMsTUFBaUQsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO29CQUN2QyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDNUIsQ0FBQztZQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBRXZELENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNkLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUM5QyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDaEMsSUFBSSxJQUFJLEtBQUssaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ25DLEtBQUssTUFBTSxNQUFNLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3hCLENBQUM7b0JBQ0QsbUJBQW1CO29CQUNuQixHQUFHLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQztnQkFDcEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDLENBQUM7UUFDRixVQUFVLEVBQUU7S0FDYixDQUFDO0lBQ0YsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgcGVybWlzc2lvblxuICovXG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIHBpcGUsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIEFycmF5YWJsZSxcbiAgSWZFcXVhbCxcbiAgSzhzUmVzb3VyY2VBY3Rpb24sXG4gIFNlbGZTdWJqZWN0QWNjZXNzUmV2aWV3LFxuICBVbmFyeU9ic2VydmFibGVGdW5jdGlvbixcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgQUxMX0FDVElPTlMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWxsb3dlZDxcbiAgVCBleHRlbmRzIEFycmF5YWJsZTxTZWxmU3ViamVjdEFjY2Vzc1Jldmlldz4sXG4gIEsgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZSxcbj4oXG4gIHRyYW5zZm9ybT86IEssXG4pOiBVbmFyeU9ic2VydmFibGVGdW5jdGlvbjxcbiAgVCxcbiAgSWZFcXVhbDxcbiAgICBLLFxuICAgIGZhbHNlLFxuICAgIFQgZXh0ZW5kcyBTZWxmU3ViamVjdEFjY2Vzc1JldmlldyB8IFJlYWRvbmx5PFNlbGZTdWJqZWN0QWNjZXNzUmV2aWV3PlxuICAgICAgPyBib29sZWFuXG4gICAgICA6IGJvb2xlYW5bXSxcbiAgICBSZWNvcmQ8XG4gICAgICBUIGV4dGVuZHMgQXJyYXlhYmxlPFNlbGZTdWJqZWN0QWNjZXNzUmV2aWV3PGluZmVyIFI+PiA/IFIgOiBuZXZlcixcbiAgICAgIGJvb2xlYW5cbiAgICA+XG4gID5cbj47XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eVxuZXhwb3J0IGZ1bmN0aW9uIGlzQWxsb3dlZCh0cmFuc2Zvcm0gPSB0cnVlKSB7XG4gIGNvbnN0IG9wZXJhdG9yczogW1xuICAgIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjx1bmtub3duPixcbiAgICBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248dW5rbm93bj4sXG4gIF0gPSBbXG4gICAgbWFwKChhY2Nlc3M6IEFycmF5YWJsZTxTZWxmU3ViamVjdEFjY2Vzc1JldmlldywgbmV2ZXI+KSA9PiB7XG4gICAgICBpZiAoIXRyYW5zZm9ybSkge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhY2Nlc3MpXG4gICAgICAgICAgPyBhY2Nlc3MubWFwKGFjYyA9PiBhY2Muc3RhdHVzLmFsbG93ZWQpXG4gICAgICAgICAgOiBhY2Nlc3Muc3RhdHVzLmFsbG93ZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoYWNjZXNzKSA/IGFjY2VzcyA6IFthY2Nlc3NdKS5yZWR1Y2U8XG4gICAgICAgIFBhcnRpYWw8UmVjb3JkPEs4c1Jlc291cmNlQWN0aW9uLCBib29sZWFuPj5cbiAgICAgID4oKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB7IHZlcmIgfSA9IGl0ZW0uc3BlYy5yZXNvdXJjZUF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgYWxsb3dlZCB9ID0gaXRlbS5zdGF0dXM7XG4gICAgICAgIGlmICh2ZXJiID09PSBLOHNSZXNvdXJjZUFjdGlvbi5BTEwpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBBTExfQUNUSU9OUykge1xuICAgICAgICAgICAgYWNjW2FjdGlvbl0gPSBhbGxvd2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgYWNjLmFsbCA9IGFsbG93ZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjW3ZlcmJdID0gYWxsb3dlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgXTtcbiAgaWYgKHRyYW5zZm9ybSkge1xuICAgIG9wZXJhdG9ycy5zcGxpY2UoMSwgMCwgc3RhcnRXaXRoKHt9KSk7XG4gIH1cbiAgcmV0dXJuIHBpcGUoLi4ub3BlcmF0b3JzKTtcbn1cbiJdfQ==