mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
rename old hasPermission as allowableOperation and introduce the real hasPermissions (#4294)
This commit is contained in:
@@ -106,35 +106,67 @@ describe('ContentService', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('should havePermission be false if allowableOperation is not present in the node', () => {
|
||||
let permissionNode = new Node({});
|
||||
expect(contentService.hasPermission(permissionNode, 'create')).toBeFalsy();
|
||||
describe('AllowableOperations', () => {
|
||||
|
||||
it('should hasAllowableOperations be false if allowableOperation is not present in the node', () => {
|
||||
let permissionNode = new Node({});
|
||||
expect(contentService.hasAllowableOperations(permissionNode, 'create')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should hasAllowableOperations be true if allowableOperation is present and you have the permission for the request operation', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'create', 'updatePermissions'] });
|
||||
|
||||
expect(contentService.hasAllowableOperations(permissionNode, 'create')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should hasAllowableOperations be false if allowableOperation is present but you don\'t have the permission for the request operation', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'updatePermissions'] });
|
||||
expect(contentService.hasAllowableOperations(permissionNode, 'create')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should hasAllowableOperations works in the opposite way with negate value', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'updatePermissions'] });
|
||||
expect(contentService.hasAllowableOperations(permissionNode, '!create')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should hasAllowableOperations return false if no permission parameter are passed', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'updatePermissions'] });
|
||||
expect(contentService.hasAllowableOperations(permissionNode, null)).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should havePermission return true if permission parameter is copy', () => {
|
||||
let permissionNode = null;
|
||||
expect(contentService.hasAllowableOperations(permissionNode, 'copy')).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
it('should havePermission be true if allowableOperation is present and you have the permission for the request operation', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'create', 'updatePermissions'] });
|
||||
describe('Permissions', () => {
|
||||
|
||||
expect(contentService.hasPermission(permissionNode, 'create')).toBeTruthy();
|
||||
});
|
||||
it('should havePermission be false if allowableOperation is not present in the node', () => {
|
||||
let permissionNode = new Node({});
|
||||
expect(contentService.hasPermissions(permissionNode, 'manager')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should havePermission be false if allowableOperation is present but you don\'t have the permission for the request operation', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'updatePermissions'] });
|
||||
expect(contentService.hasPermission(permissionNode, 'create')).toBeFalsy();
|
||||
});
|
||||
it('should havePermission be true if permissions is present and you have the permission for the request operation', () => {
|
||||
let permissionNode = new Node({ permissions: { locallySet: [{ name: 'manager' }, { name: 'collaborator' }, { name: 'consumer' }] } });
|
||||
|
||||
it('should havePermission works in the opposite way with negate value', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'updatePermissions'] });
|
||||
expect(contentService.hasPermission(permissionNode, '!create')).toBeTruthy();
|
||||
});
|
||||
expect(contentService.hasPermissions(permissionNode, 'manager')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should havePermission return false id no permission parameter are passed', () => {
|
||||
let permissionNode = new Node({ allowableOperations: ['delete', 'update', 'updatePermissions'] });
|
||||
expect(contentService.hasPermission(permissionNode, null)).toBeFalsy();
|
||||
});
|
||||
it('should havePermission be false if permissions is present but you don\'t have the permission for the request operation', () => {
|
||||
let permissionNode = new Node({ permissions: { locallySet: [{ name: 'collaborator' }, { name: 'consumer' }] } });
|
||||
expect(contentService.hasPermissions(permissionNode, 'manager')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should havePermission return true if permission parameter is copy', () => {
|
||||
let permissionNode = null;
|
||||
expect(contentService.hasPermission(permissionNode, 'copy')).toBeTruthy();
|
||||
it('should havePermission works in the opposite way with negate value', () => {
|
||||
let permissionNode = new Node({ permissions: { locallySet: [{ name: 'collaborator' }, { name: 'consumer' }] } });
|
||||
expect(contentService.hasPermissions(permissionNode, '!manager')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should havePermission return false if no permission parameter are passed', () => {
|
||||
let permissionNode = new Node({ permissions: { locallySet: [{ name: 'collaborator' }, { name: 'consumer' }] } });
|
||||
expect(contentService.hasPermissions(permissionNode, null)).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Download blob', () => {
|
||||
|
@@ -20,11 +20,12 @@ import { DomSanitizer } from '@angular/platform-browser';
|
||||
import { ContentApi, MinimalNode, Node, NodeEntry } from '@alfresco/js-api';
|
||||
import { Observable, Subject, from, throwError } from 'rxjs';
|
||||
import { FolderCreatedEvent } from '../events/folder-created.event';
|
||||
import { PermissionsEnum } from '../models/permissions.enum';
|
||||
import { AlfrescoApiService } from './alfresco-api.service';
|
||||
import { AuthenticationService } from './authentication.service';
|
||||
import { LogService } from './log.service';
|
||||
import { catchError } from 'rxjs/operators';
|
||||
import { PermissionsEnum } from '../models/permissions.enum';
|
||||
import { AllowableOperationsEnum } from '../models/allowable-operations.enum';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -171,50 +172,66 @@ export class ContentService {
|
||||
return from(this.apiService.getInstance().nodes.getNode(nodeId, opts));
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the user has permission on that node
|
||||
* @param node Node to check permissions
|
||||
* @param permission
|
||||
* @returns True if the user has the required permissions, false otherwise
|
||||
*/
|
||||
hasPermissions(node: Node, permission: PermissionsEnum | string): boolean {
|
||||
let hasPermissions = false;
|
||||
|
||||
if (node && node.permissions && node.permissions.locallySet) {
|
||||
if (permission && permission.startsWith('!')) {
|
||||
hasPermissions = node.permissions.locallySet.find((currentPermission) => currentPermission.name === permission.replace('!', '')) ? false : true;
|
||||
} else {
|
||||
hasPermissions = node.permissions.locallySet.find((currentPermission) => currentPermission.name === permission) ? true : false;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (permission && permission.startsWith('!')) {
|
||||
hasPermissions = true;
|
||||
}
|
||||
}
|
||||
|
||||
return hasPermissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the user has permissions on that node
|
||||
* @param node Node to check allowableOperations
|
||||
* @param permission Create, delete, update, updatePermissions, !create, !delete, !update, !updatePermissions
|
||||
* @returns True if the user has the required permissions, false otherwise
|
||||
*/
|
||||
hasPermission(node: Node, permission: PermissionsEnum | string): boolean {
|
||||
let hasPermission = false;
|
||||
hasAllowableOperations(node: Node, allowableOperation: AllowableOperationsEnum | string): boolean {
|
||||
let hasAllowableOperations = false;
|
||||
|
||||
if (this.hasAllowableOperations(node)) {
|
||||
if (permission && permission.startsWith('!')) {
|
||||
hasPermission = node.allowableOperations.find((currentPermission) => currentPermission === permission.replace('!', '')) ? false : true;
|
||||
if (node && node.allowableOperations) {
|
||||
if (allowableOperation && allowableOperation.startsWith('!')) {
|
||||
hasAllowableOperations = node.allowableOperations.find((currentOperation) => currentOperation === allowableOperation.replace('!', '')) ? false : true;
|
||||
} else {
|
||||
hasPermission = node.allowableOperations.find((currentPermission) => currentPermission === permission) ? true : false;
|
||||
hasAllowableOperations = node.allowableOperations.find((currentOperation) => currentOperation === allowableOperation) ? true : false;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (permission && permission.startsWith('!')) {
|
||||
hasPermission = true;
|
||||
if (allowableOperation && allowableOperation.startsWith('!')) {
|
||||
hasAllowableOperations = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (permission === PermissionsEnum.COPY) {
|
||||
hasPermission = true;
|
||||
if (allowableOperation === AllowableOperationsEnum.COPY) {
|
||||
hasAllowableOperations = true;
|
||||
}
|
||||
|
||||
if (permission === PermissionsEnum.LOCK) {
|
||||
hasPermission = node.isFile;
|
||||
if (allowableOperation === AllowableOperationsEnum.LOCK) {
|
||||
hasAllowableOperations = node.isFile;
|
||||
|
||||
if (node.isLocked && this.hasAllowableOperations(node)) {
|
||||
hasPermission = !!~node.allowableOperations.indexOf('updatePermissions');
|
||||
if (node.isLocked && node.allowableOperations) {
|
||||
hasAllowableOperations = !!~node.allowableOperations.indexOf('updatePermissions');
|
||||
}
|
||||
}
|
||||
|
||||
return hasPermission;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the node has the properties allowableOperations
|
||||
* @param node Node to check allowableOperations
|
||||
* @returns True if the node has the property, false otherwise
|
||||
*/
|
||||
hasAllowableOperations(node: any): boolean {
|
||||
return node && node.allowableOperations ? true : false;
|
||||
return hasAllowableOperations;
|
||||
}
|
||||
|
||||
private handleError(error: any) {
|
||||
|
Reference in New Issue
Block a user