From 99e694ef984bb82fb2c5593228c2289b4305ff24 Mon Sep 17 00:00:00 2001 From: Vito Date: Wed, 21 Mar 2018 22:02:40 +0000 Subject: [PATCH] [ADF-2432] Creating component to display node permission (#3106) * [ADF-2432] start adding demo shell changes for permissions * [ADF-2432] permission display component - phase 1 * [ADF-2432] added permissions to node query| * [ADF-2432] display permission table for node - phase 2 * [ADF-2432] fixed layout for display permissions * [ADF-2432] added test and documentation for permission display * [ADF-2432] fixed wrong rebase changes * [ADF-2432] added peer review changes * [ADF-2432] added license header to mock file --- demo-shell/resources/i18n/en.json | 1 + demo-shell/src/app/app.module.ts | 4 +- demo-shell/src/app/app.routes.ts | 6 + .../datatable/datatable.component.ts | 2 +- .../app/components/files/files.component.html | 7 + .../app/components/files/files.component.ts | 4 + .../demo-permissions.component.html | 2 + .../demo-permissions.component.scss | 0 .../permissions/demo-permissions.component.ts | 43 ++++ .../permission-list.component.md | 26 +++ docs/docassets/images/adf-permission-list.png | Bin 0 -> 118678 bytes lib/content-services/content.module.ts | 7 +- .../services/document-list.service.ts | 4 +- lib/content-services/i18n/en.json | 8 + lib/content-services/index.ts | 2 + .../mock/permission-list.component.mock.ts | 185 ++++++++++++++++++ .../permission-list.component.html | 28 +++ .../permission-list.component.scss | 15 ++ .../permission-list.component.spec.ts | 81 ++++++++ .../permission-list.component.ts | 64 ++++++ .../permission-manager/index.ts | 18 ++ .../models/permission.model.ts | 34 ++++ .../permission-manager.module.ts | 43 ++++ .../permission-manager/public-api.ts | 20 ++ lib/content-services/styles/_index.scss | 2 + lib/core/services/nodes-api.service.ts | 4 +- 26 files changed, 602 insertions(+), 8 deletions(-) create mode 100644 demo-shell/src/app/components/permissions/demo-permissions.component.html create mode 100644 demo-shell/src/app/components/permissions/demo-permissions.component.scss create mode 100644 demo-shell/src/app/components/permissions/demo-permissions.component.ts create mode 100644 docs/content-services/permission-list.component.md create mode 100644 docs/docassets/images/adf-permission-list.png create mode 100644 lib/content-services/mock/permission-list.component.mock.ts create mode 100644 lib/content-services/permission-manager/components/permission-display/permission-list.component.html create mode 100644 lib/content-services/permission-manager/components/permission-display/permission-list.component.scss create mode 100644 lib/content-services/permission-manager/components/permission-display/permission-list.component.spec.ts create mode 100644 lib/content-services/permission-manager/components/permission-display/permission-list.component.ts create mode 100644 lib/content-services/permission-manager/index.ts create mode 100644 lib/content-services/permission-manager/models/permission.model.ts create mode 100644 lib/content-services/permission-manager/permission-manager.module.ts create mode 100644 lib/content-services/permission-manager/public-api.ts diff --git a/demo-shell/resources/i18n/en.json b/demo-shell/resources/i18n/en.json index 20eb25d03c..af2536eae6 100644 --- a/demo-shell/resources/i18n/en.json +++ b/demo-shell/resources/i18n/en.json @@ -89,6 +89,7 @@ "VERSIONS": "Manage versions", "METADATA": "Info", "DOWNLOAD": "Download", + "PERMISSION": "Permission", "FOLDER": { "COPY": "Copy", "MOVE": "Move", diff --git a/demo-shell/src/app/app.module.ts b/demo-shell/src/app/app.module.ts index c739a355b9..ab1998dac5 100644 --- a/demo-shell/src/app/app.module.ts +++ b/demo-shell/src/app/app.module.ts @@ -47,6 +47,7 @@ import { ReactiveFormsModule } from '@angular/forms'; import { TaskAttachmentsComponent } from './components/process-service/task-attachments.component'; import { ProcessAttachmentsComponent } from './components/process-service/process-attachments.component'; import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component'; +import { DemoPermissionComponent } from './components/permissions/demo-permissions.component'; @NgModule({ @@ -94,7 +95,8 @@ import { SharedLinkViewComponent } from './components/shared-link-view/shared-li ProcessAttachmentsComponent, OverlayViewerComponent, SharedLinkViewComponent, - FormLoadingComponent + FormLoadingComponent, + DemoPermissionComponent ], providers: [ { provide: AppConfigService, useClass: DebugAppConfigService }, diff --git a/demo-shell/src/app/app.routes.ts b/demo-shell/src/app/app.routes.ts index 30e317e3cc..4377aada4e 100644 --- a/demo-shell/src/app/app.routes.ts +++ b/demo-shell/src/app/app.routes.ts @@ -46,6 +46,7 @@ import { FormListComponent } from './components/form/form-list.component'; import { OverlayViewerComponent } from './components/overlay-viewer/overlay-viewer.component'; import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component'; import { FormLoadingComponent } from './components/form/form-loading.component'; +import { DemoPermissionComponent } from './components/permissions/demo-permissions.component'; export const appRoutes: Routes = [ { path: 'login', component: LoginComponent }, @@ -165,6 +166,11 @@ export const appRoutes: Routes = [ component: SocialComponent, canActivate: [AuthGuardEcm] }, + { + path: 'permissions/:id', + component: DemoPermissionComponent, + canActivate: [AuthGuardEcm] + }, { path: 'about', component: AboutComponent }, { path: 'form', component: FormComponent }, { path: 'form-list', component: FormListComponent }, diff --git a/demo-shell/src/app/components/datatable/datatable.component.ts b/demo-shell/src/app/components/datatable/datatable.component.ts index daf7d17901..cb8c92cc59 100644 --- a/demo-shell/src/app/components/datatable/datatable.component.ts +++ b/demo-shell/src/app/components/datatable/datatable.component.ts @@ -178,7 +178,7 @@ export class DataTableComponent { getRowForNode() { const opts: any = { includeSource: true, - include: ['path', 'properties', 'allowableOperations'] + include: ['path', 'properties', 'allowableOperations', 'permissions'] }; Observable.fromPromise(this.apiService.getInstance().nodes diff --git a/demo-shell/src/app/components/files/files.component.html b/demo-shell/src/app/components/files/files.component.html index 0a57d672fd..33e0dd15ef 100644 --- a/demo-shell/src/app/components/files/files.component.html +++ b/demo-shell/src/app/components/files/files.component.html @@ -308,6 +308,13 @@ title="DOCUMENT_LIST.ACTIONS.DOCUMENT.PROCESS_ACTION" (execute)="startProcesAction($event)"> + + + diff --git a/demo-shell/src/app/components/permissions/demo-permissions.component.scss b/demo-shell/src/app/components/permissions/demo-permissions.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/demo-shell/src/app/components/permissions/demo-permissions.component.ts b/demo-shell/src/app/components/permissions/demo-permissions.component.ts new file mode 100644 index 0000000000..294aab1f9d --- /dev/null +++ b/demo-shell/src/app/components/permissions/demo-permissions.component.ts @@ -0,0 +1,43 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Component, Optional, OnInit } from '@angular/core'; +import { ActivatedRoute, Params} from '@angular/router'; + +@Component({ + selector: 'app-permissions', + templateUrl: './demo-permissions.component.html', + styleUrls: ['./demo-permissions.component.scss'] +}) +export class DemoPermissionComponent implements OnInit { + + nodeId: string; + + constructor(@Optional() private route: ActivatedRoute) { + } + + ngOnInit() { + if (this.route) { + this.route.params.forEach((params: Params) => { + if (params['id']) { + this.nodeId = params['id']; + } + }); + } + } + +} diff --git a/docs/content-services/permission-list.component.md b/docs/content-services/permission-list.component.md new file mode 100644 index 0000000000..d034a024a3 --- /dev/null +++ b/docs/content-services/permission-list.component.md @@ -0,0 +1,26 @@ +--- +Added: v2.3.0 +Status: Active +Last reviewed: 2018-03-12 +--- + +# Permission List Component + +![Permission List](../docassets/images/adf-permission-list.png) + +## Basic Usage + +```html + + +``` + +### Properties + +| Name | Type | Default value | Description | +| ---- | ---- | ------------- | ----------- | +| nodeId | `string` | `null` | node id which we want to show the permissions | + +## Details + +This component use the `datatable` to show the permission retrieved from the node service. \ No newline at end of file diff --git a/docs/docassets/images/adf-permission-list.png b/docs/docassets/images/adf-permission-list.png new file mode 100644 index 0000000000000000000000000000000000000000..0fbea26de21eed125a513828d1306c6dfab651f7 GIT binary patch literal 118678 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

&|QCBp-fX4BwP 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 literal 0 HcmV?d00001 diff --git a/lib/content-services/content.module.ts b/lib/content-services/content.module.ts index 4227939705..e4fa82a884 100644 --- a/lib/content-services/content.module.ts +++ b/lib/content-services/content.module.ts @@ -36,6 +36,7 @@ import { ContentDirectiveModule } from './directives/content-directive.module'; import { DialogModule } from './dialogs/dialog.module'; import { FolderDirectiveModule } from './folder-directive/folder-directive.module'; import { ContentMetadataModule } from './content-metadata/content-metadata.module'; +import { PermissionManagerModule } from './permission-manager/permission-manager.module'; @NgModule({ imports: [ @@ -57,7 +58,8 @@ import { ContentMetadataModule } from './content-metadata/content-metadata.modul ContentMetadataModule, DialogModule, FolderDirectiveModule, - ContentDirectiveModule + ContentDirectiveModule, + PermissionManagerModule ], providers: [ { @@ -84,7 +86,8 @@ import { ContentMetadataModule } from './content-metadata/content-metadata.modul ContentMetadataModule, DialogModule, FolderDirectiveModule, - ContentDirectiveModule + ContentDirectiveModule, + PermissionManagerModule ] }) export class ContentModule { diff --git a/lib/content-services/document-list/services/document-list.service.ts b/lib/content-services/document-list/services/document-list.service.ts index 14890826c3..45a6d4cf19 100644 --- a/lib/content-services/document-list/services/document-list.service.ts +++ b/lib/content-services/document-list/services/document-list.service.ts @@ -50,7 +50,7 @@ export class DocumentListService { let params: any = { includeSource: true, - include: ['path', 'properties', 'allowableOperations'] + include: ['path', 'properties', 'allowableOperations', 'permissions'] }; if (folder) { @@ -127,7 +127,7 @@ export class DocumentListService { getFolderNode(nodeId: string): Promise { let opts: any = { includeSource: true, - include: ['path', 'properties', 'allowableOperations'] + include: ['path', 'properties', 'allowableOperations', 'permissions'] }; let nodes: any = this.apiService.getInstance().nodes; diff --git a/lib/content-services/i18n/en.json b/lib/content-services/i18n/en.json index da1c7bb068..cc1df95d16 100644 --- a/lib/content-services/i18n/en.json +++ b/lib/content-services/i18n/en.json @@ -206,5 +206,13 @@ "CLOSE": "CLOSE", "COPY-LINK": "COPY LINK" } + }, + "PERMISSION_MANAGER": { + "PERMISSION_DISPLAY": { + "INHERITED" : "Inherited", + "AUTHORITY_ID" : "Authority ID", + "NAME": "Name", + "LOCALLY_SET" : "Locally set" + } } } diff --git a/lib/content-services/index.ts b/lib/content-services/index.ts index 454cd8b0dc..fd6832da53 100644 --- a/lib/content-services/index.ts +++ b/lib/content-services/index.ts @@ -31,6 +31,7 @@ export * from './dialogs/dialog.module'; export * from './folder-directive/folder-directive.module'; export * from './content-metadata/content-metadata.module'; export * from './directives/content-directive.module'; +export * from './permission-manager/permission-manager.module'; export * from './directives'; export * from './social'; @@ -46,3 +47,4 @@ export * from './content-node-selector'; export * from './dialogs'; export * from './folder-directive'; export * from './content-metadata'; +export * from './permission-manager'; diff --git a/lib/content-services/mock/permission-list.component.mock.ts b/lib/content-services/mock/permission-list.component.mock.ts new file mode 100644 index 0000000000..ab05d6fb9a --- /dev/null +++ b/lib/content-services/mock/permission-list.component.mock.ts @@ -0,0 +1,185 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export const fakeNodeWithPermissions: any = { + 'aspectNames': [ + 'cm:auditable', + 'cm:taggable', + 'cm:author', + 'cm:titled', + 'app:uifacets' + ], + 'createdAt': '2017-11-16T16:29:38.638+0000', + 'isFolder': true, + 'isFile': false, + 'createdByUser': { + 'id': 'System', + 'displayName': 'System' + }, + 'modifiedAt': '2018-03-21T03:17:58.783+0000', + 'permissions': { + 'inherited': [ + { + 'authorityId': 'guest', + 'name': 'Read', + 'accessStatus': 'ALLOWED' + }, + { + 'authorityId': 'GROUP_EVERYONE', + 'name': 'Read', + 'accessStatus': 'ALLOWED' + } + ], + 'locallySet': [ + { + 'authorityId': 'GROUP_EVERYONE', + 'name': 'Contributor', + 'accessStatus': 'ALLOWED' + } + ], + 'settable': [ + 'Contributor', + 'Collaborator', + 'Coordinator', + 'Editor', + 'Consumer' + ], + 'isInheritanceEnabled': true + }, + 'modifiedByUser': { + 'id': 'admin', + 'displayName': 'PedroH Hernandez' + }, + 'name': 'test', + 'id': 'f472543f-7218-403d-917b-7a5861257244', + 'nodeType': 'cm:folder', + 'properties': { + 'cm:title': 'test', + 'cm:author': 'yagud', + 'cm:taggable': [ + 'e8c8fbba-03ba-4fa6-86b1-f7ad7c296409' + ], + 'cm:description': 'sleepery', + 'app:icon': 'space-icon-default' + } +}; + +export const fakeNodeInheritedOnly: any = { + 'aspectNames': [ + 'cm:auditable', + 'cm:taggable', + 'cm:author', + 'cm:titled', + 'app:uifacets' + ], + 'createdAt': '2017-11-16T16:29:38.638+0000', + 'isFolder': true, + 'isFile': false, + 'createdByUser': { + 'id': 'System', + 'displayName': 'System' + }, + 'modifiedAt': '2018-03-21T03:17:58.783+0000', + 'permissions': { + 'inherited': [ + { + 'authorityId': 'guest', + 'name': 'Read', + 'accessStatus': 'ALLOWED' + }, + { + 'authorityId': 'GROUP_EVERYONE', + 'name': 'Read', + 'accessStatus': 'ALLOWED' + } + ], + 'settable': [ + 'Contributor', + 'Collaborator', + 'Coordinator', + 'Editor', + 'Consumer' + ], + 'isInheritanceEnabled': true + }, + 'modifiedByUser': { + 'id': 'admin', + 'displayName': 'PedroH Hernandez' + }, + 'name': 'test', + 'id': 'f472543f-7218-403d-917b-7a5861257244', + 'nodeType': 'cm:folder', + 'properties': { + 'cm:title': 'test', + 'cm:author': 'yagud', + 'cm:taggable': [ + 'e8c8fbba-03ba-4fa6-86b1-f7ad7c296409' + ], + 'cm:description': 'sleepery', + 'app:icon': 'space-icon-default' + } +}; +export const fakeNodeWithOnlyLocally: any = { + 'aspectNames': [ + 'cm:auditable', + 'cm:taggable', + 'cm:author', + 'cm:titled', + 'app:uifacets' + ], + 'createdAt': '2017-11-16T16:29:38.638+0000', + 'isFolder': true, + 'isFile': false, + 'createdByUser': { + 'id': 'System', + 'displayName': 'System' + }, + 'modifiedAt': '2018-03-21T03:17:58.783+0000', + 'permissions': { + 'locallySet': [ + { + 'authorityId': 'GROUP_EVERYONE', + 'name': 'Contributor', + 'accessStatus': 'ALLOWED' + } + ], + 'settable': [ + 'Contributor', + 'Collaborator', + 'Coordinator', + 'Editor', + 'Consumer' + ], + 'isInheritanceEnabled': true + }, + 'modifiedByUser': { + 'id': 'admin', + 'displayName': 'PedroH Hernandez' + }, + 'name': 'test', + 'id': 'f472543f-7218-403d-917b-7a5861257244', + 'nodeType': 'cm:folder', + 'properties': { + 'cm:title': 'test', + 'cm:author': 'yagud', + 'cm:taggable': [ + 'e8c8fbba-03ba-4fa6-86b1-f7ad7c296409' + ], + 'cm:description': 'sleepery', + 'app:icon': 'space-icon-default' + } +}; diff --git a/lib/content-services/permission-manager/components/permission-display/permission-list.component.html b/lib/content-services/permission-manager/components/permission-display/permission-list.component.html new file mode 100644 index 0000000000..ed87390d6c --- /dev/null +++ b/lib/content-services/permission-manager/components/permission-display/permission-list.component.html @@ -0,0 +1,28 @@ +

+ diff --git a/lib/content-services/permission-manager/components/permission-display/permission-list.component.scss b/lib/content-services/permission-manager/components/permission-display/permission-list.component.scss new file mode 100644 index 0000000000..348cd0219b --- /dev/null +++ b/lib/content-services/permission-manager/components/permission-display/permission-list.component.scss @@ -0,0 +1,15 @@ +@mixin adf-permission-list-theme($theme) { + + .adf{ + + &-display-permission-container { + display: flex; + justify-content: space-around; + } + + &-datatable-permission { + display: flex; + flex-basis: 38%; + } + } +} diff --git a/lib/content-services/permission-manager/components/permission-display/permission-list.component.spec.ts b/lib/content-services/permission-manager/components/permission-display/permission-list.component.spec.ts new file mode 100644 index 0000000000..ad611ba8b5 --- /dev/null +++ b/lib/content-services/permission-manager/components/permission-display/permission-list.component.spec.ts @@ -0,0 +1,81 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { PermissionListComponent } from './permission-list.component'; +import { NodesApiService } from '@alfresco/adf-core'; +import { Observable } from 'rxjs/Observable'; +import { fakeNodeWithPermissions, fakeNodeInheritedOnly, fakeNodeWithOnlyLocally} from '../../../mock/permission-list.component.mock'; + +describe('PermissionDisplayComponent', () => { + + let fixture: ComponentFixture; + let component: PermissionListComponent; + let element: HTMLElement; + let nodeService: NodesApiService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + PermissionListComponent + ], + providers: [NodesApiService] + }).compileComponents().then(() => { + fixture = TestBed.createComponent(PermissionListComponent); + component = fixture.componentInstance; + element = fixture.nativeElement; + nodeService = TestBed.get(NodesApiService); + }); + })); + + afterEach(async(() => { + fixture.destroy(); + TestBed.resetTestingModule(); + })); + + it('should be able to render the component', async() => { + fixture.detectChanges(); + expect(element.querySelector('#adf-permission-display-container')).not.toBeNull(); + }); + + it('should show the node permissions', async() => { + component.nodeId = 'fake-node-id'; + spyOn(nodeService, 'getNode').and.returnValue(Observable.of(fakeNodeWithPermissions)); + fixture.detectChanges(); + expect(element.querySelector('#adf-permission-display-container')).not.toBeNull(); + expect(element.querySelectorAll('.adf-datatable-row').length).toBe(4); + }); + + it('should show inherited label for inherited permissions', async() => { + component.nodeId = 'fake-node-id'; + spyOn(nodeService, 'getNode').and.returnValue(Observable.of(fakeNodeInheritedOnly)); + fixture.detectChanges(); + expect(element.querySelector('#adf-permission-display-container')).not.toBeNull(); + expect(element.querySelector('#adf-permission-inherited-label')).toBeDefined(); + expect(element.querySelector('#adf-permission-inherited-label')).not.toBeNull(); + }); + + it('should show locally set label for locally set permissions', async() => { + component.nodeId = 'fake-node-id'; + spyOn(nodeService, 'getNode').and.returnValue(Observable.of(fakeNodeWithOnlyLocally)); + fixture.detectChanges(); + expect(element.querySelector('#adf-permission-display-container')).not.toBeNull(); + expect(element.querySelector('#adf-permission-locallyset-label')).toBeDefined(); + expect(element.querySelector('#adf-permission-locallyset-label')).not.toBeNull(); + }); + +}); diff --git a/lib/content-services/permission-manager/components/permission-display/permission-list.component.ts b/lib/content-services/permission-manager/components/permission-display/permission-list.component.ts new file mode 100644 index 0000000000..df154ccd6f --- /dev/null +++ b/lib/content-services/permission-manager/components/permission-display/permission-list.component.ts @@ -0,0 +1,64 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Component, ViewEncapsulation, Input, OnInit } from '@angular/core'; +import { NodesApiService } from '@alfresco/adf-core'; +import { MinimalNodeEntryEntity } from 'alfresco-js-api'; +import { PermissionDisplayModel } from '../../models/permission.model'; + +@Component({ + selector: 'adf-permission-list', + templateUrl: './permission-list.component.html', + styleUrls: ['./permission-list.component.scss'], + encapsulation: ViewEncapsulation.None +}) +export class PermissionListComponent implements OnInit { + + @Input() + nodeId: string = ''; + + permissionList: PermissionDisplayModel[]; + + constructor(private nodeService: NodesApiService) { + + } + + ngOnInit() { + this.nodeService.getNode(this.nodeId).subscribe((node: MinimalNodeEntryEntity) => { + this.permissionList = this.getPermissionList(node); + }); + } + + private getPermissionList(node: MinimalNodeEntryEntity): PermissionDisplayModel[] { + let allPermissions: PermissionDisplayModel[] = []; + if (node.permissions.locallySet) { + node.permissions.locallySet.map((element) => { + let permission = new PermissionDisplayModel(element); + allPermissions.push(permission); + }); + } + if (node.permissions.inherited) { + node.permissions.inherited.map((element) => { + let permissionInherited = new PermissionDisplayModel(element); + permissionInherited.isInherited = true; + allPermissions.push(permissionInherited); + }); + } + return allPermissions; + } + +} diff --git a/lib/content-services/permission-manager/index.ts b/lib/content-services/permission-manager/index.ts new file mode 100644 index 0000000000..4c6ac1d58f --- /dev/null +++ b/lib/content-services/permission-manager/index.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './public-api'; diff --git a/lib/content-services/permission-manager/models/permission.model.ts b/lib/content-services/permission-manager/models/permission.model.ts new file mode 100644 index 0000000000..41767a7d4a --- /dev/null +++ b/lib/content-services/permission-manager/models/permission.model.ts @@ -0,0 +1,34 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class PermissionDisplayModel { + accessStatus: string; + authorityId: string; + name: string; + isInherited: boolean = false; + icon: string; + + constructor(obj?: any) { + if (obj) { + this.accessStatus = obj.accessStatus; + this.authorityId = obj.authorityId; + this.name = obj.name; + this.isInherited = obj.isInherited; + this.icon = obj.icon ? obj.icon : 'lock_open'; + } + } +} diff --git a/lib/content-services/permission-manager/permission-manager.module.ts b/lib/content-services/permission-manager/permission-manager.module.ts new file mode 100644 index 0000000000..1088f7a688 --- /dev/null +++ b/lib/content-services/permission-manager/permission-manager.module.ts @@ -0,0 +1,43 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { TranslateModule } from '@ngx-translate/core'; +import { MaterialModule } from '../material.module'; +import { PermissionListComponent } from './components/permission-display/permission-list.component'; +import { DataTableModule, DataColumnModule } from '@alfresco/adf-core'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + MaterialModule, + TranslateModule, + DataTableModule, + DataColumnModule + ], + declarations: [ + PermissionListComponent + ], + exports: [ + PermissionListComponent + ] +}) +export class PermissionManagerModule {} diff --git a/lib/content-services/permission-manager/public-api.ts b/lib/content-services/permission-manager/public-api.ts new file mode 100644 index 0000000000..d795356379 --- /dev/null +++ b/lib/content-services/permission-manager/public-api.ts @@ -0,0 +1,20 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + export * from './components/permission-display/permission-list.component'; + + export * from './models/permission.model'; diff --git a/lib/content-services/styles/_index.scss b/lib/content-services/styles/_index.scss index 550f533880..256f56c9f6 100644 --- a/lib/content-services/styles/_index.scss +++ b/lib/content-services/styles/_index.scss @@ -14,6 +14,7 @@ @import '../content-node-selector/content-node-selector.component'; @import '../content-metadata/content-metadata.module'; +@import '../permission-manager/components/permission-display/permission-list.component'; @mixin adf-content-services-theme($theme) { @include adf-breadcrumb-theme($theme); @@ -28,4 +29,5 @@ @include adf-dialog-theme($theme); @include adf-content-node-selector-dialog-theme($theme) ; @include adf-content-metadata-module-theme($theme); + @include adf-permission-list-theme($theme); } diff --git a/lib/core/services/nodes-api.service.ts b/lib/core/services/nodes-api.service.ts index b53fe3d52d..98abaddf5e 100644 --- a/lib/core/services/nodes-api.service.ts +++ b/lib/core/services/nodes-api.service.ts @@ -46,7 +46,7 @@ export class NodesApiService { getNode(nodeId: string, options: any = {}): Observable { const { nodesApi, handleError, getEntryFromEntity } = this; const defaults = { - include: [ 'path', 'properties', 'allowableOperations' ] + include: [ 'path', 'properties', 'allowableOperations', 'permissions' ] }; const queryOptions = Object.assign(defaults, options); const promise = nodesApi @@ -68,7 +68,7 @@ export class NodesApiService { const defaults = { maxItems: this.preferences.paginationSize, skipCount: 0, - include: [ 'path', 'properties', 'allowableOperations' ] + include: [ 'path', 'properties', 'allowableOperations', 'permissions' ] }; const queryOptions = Object.assign(defaults, options); const promise = nodesApi