@eclipse-scout/core
Version:
Eclipse Scout runtime
70 lines (55 loc) • 2.17 kB
text/typescript
/*
* Copyright (c) 2010, 2025 BSI Business Systems Integration AG
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
import {access, AccessControl, arrays, ObjectFactory, ObjectOrModel, Permission, PermissionCollection, PermissionCollectionModel, PermissionCollectionType} from '../../index';
import $ from 'jquery';
export const accessSpecHelper = {
install(permissionCollectionModel?: PermissionCollectionModel): JQuery.Promise<any> {
permissionCollectionModel = permissionCollectionModel || accessSpecHelper.allPermissionCollectionModel();
ObjectFactory.get().register(AccessControl, () => new StaticAccessControl(permissionCollectionModel));
return access.bootstrap('permissions');
},
uninstall() {
ObjectFactory.get().register(AccessControl, () => new AccessControl());
access.tearDown();
},
permissionCollectionModel(...permissions: ObjectOrModel<Permission>[]): PermissionCollectionModel {
const permissionMap = new Map();
arrays.ensure(permissions)
.forEach(p => {
p = Permission.ensure(p);
permissionMap.set(p.id, [...arrays.ensure(permissionMap.get(p.id)), p]);
});
return {
permissions: permissionMap,
type: PermissionCollectionType.DEFAULT
};
},
allPermissionCollectionModel(): PermissionCollectionModel {
return {type: PermissionCollectionType.ALL};
},
nonePermissionCollectionModel(): PermissionCollectionModel {
return {type: PermissionCollectionType.NONE};
}
};
class StaticAccessControl extends AccessControl {
constructor(permissionCollectionModel: PermissionCollectionModel) {
super();
this._permissionCollection = PermissionCollection.ensure(permissionCollectionModel);
}
protected override _load(): JQuery.Promise<void> {
return $.resolvedPromise();
}
protected override _subscribeForNotifications(): JQuery.Promise<string> {
return $.resolvedPromise();
}
protected override _unsubscribeFromNotifications() {
// nop
}
}