@adaptabletools/adaptable
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
51 lines (50 loc) • 2.31 kB
JavaScript
import { ApiBase } from './ApiBase';
import { EntitlementInternalApi } from '../Internal/EntitlementInternalApi';
export class EntitlementApiImpl extends ApiBase {
constructor(_adaptable) {
super(_adaptable);
this.internalApi = new EntitlementInternalApi(_adaptable);
}
getEntitlementAccessLevelForModule(adaptableModule) {
let entitlementOptions = this.getEntitlementOptions();
if (entitlementOptions) {
const defaultAccessLevelContext = this.getAdaptableInternalApi().buildBaseContext();
const defaultAccessLevel = typeof entitlementOptions.defaultAccessLevel === 'function'
? entitlementOptions.defaultAccessLevel(defaultAccessLevelContext)
: entitlementOptions.defaultAccessLevel;
const moduleEntitlements = entitlementOptions.moduleEntitlements;
if (moduleEntitlements) {
if (typeof moduleEntitlements === 'function') {
const entitlementContext = {
adaptableModule,
...this.getAdaptableInternalApi().buildBaseContext(),
defaultAccessLevel,
};
const dynamicModuleEntitlement = moduleEntitlements(entitlementContext);
return dynamicModuleEntitlement ?? defaultAccessLevel;
}
else {
const entitlement = moduleEntitlements.find((f) => f.adaptableModule === adaptableModule);
if (entitlement) {
return entitlement.accessLevel;
}
}
}
// if still here then return their default Access Level
return defaultAccessLevel;
}
return 'Full';
}
isObjectReadonly(object) {
return object.IsReadOnly;
}
isModuleHiddenEntitlement(adaptableModule) {
return this.getEntitlementAccessLevelForModule(adaptableModule) == 'Hidden';
}
isModuleFullEntitlement(adaptableModule) {
return this.getEntitlementAccessLevelForModule(adaptableModule) == 'Full';
}
isModuleReadOnlyEntitlement(adaptableModule) {
return this.getEntitlementAccessLevelForModule(adaptableModule) == 'ReadOnly';
}
}