From 83e362d31a737200bc9251e9505137f198509d2f Mon Sep 17 00:00:00 2001 From: Maurizio Vitale Date: Wed, 8 Apr 2020 16:43:36 +0100 Subject: [PATCH] Ability to check if loggedIn based on provider (#5598) * Provide a way to check if loggedIn based on provider * Fix the comments * Add schema validation for provider --- lib/core/services/authentication.service.spec.ts | 10 ++++++++++ lib/core/services/authentication.service.ts | 10 ++++++++++ lib/extensions/src/lib/config/navbar.extensions.ts | 1 + .../src/lib/config/schema/plugin-extension.schema.json | 5 +++++ 4 files changed, 26 insertions(+) diff --git a/lib/core/services/authentication.service.spec.ts b/lib/core/services/authentication.service.spec.ts index 774f7f96c4..15799462c3 100644 --- a/lib/core/services/authentication.service.spec.ts +++ b/lib/core/services/authentication.service.spec.ts @@ -76,6 +76,11 @@ describe('AuthenticationService', () => { expect(apiService.getInstance).toHaveBeenCalled(); }); + it('should check if loggedin on ECM in case the provider is ECM', () => { + spyOn(authService, 'isEcmLoggedIn').and.returnValue(true); + expect(authService.isLoggedInWith('ECM')).toBe(true); + }); + it('should require remember me set for ECM check', () => { spyOn(cookie, 'isEnabled').and.returnValue(true); spyOn(authService, 'isRememberMeSet').and.returnValue(false); @@ -198,6 +203,11 @@ describe('AuthenticationService', () => { expect(apiService.getInstance).not.toHaveBeenCalled(); }); + it('should check if loggedin on BPM in case the provider is BPM', () => { + spyOn(authService, 'isBpmLoggedIn').and.returnValue(true); + expect(authService.isLoggedInWith('BPM')).toBe(true); + }); + it('should not require cookie service enabled for BPM check', () => { spyOn(cookie, 'isEnabled').and.returnValue(false); spyOn(authService, 'isRememberMeSet').and.returnValue(false); diff --git a/lib/core/services/authentication.service.ts b/lib/core/services/authentication.service.ts index 8def6339c3..d1d06d1162 100644 --- a/lib/core/services/authentication.service.ts +++ b/lib/core/services/authentication.service.ts @@ -61,6 +61,16 @@ export class AuthenticationService { return this.alfrescoApi.getInstance().isLoggedIn(); } + isLoggedInWith(provider: string): boolean { + if (provider === 'BPM') { + return this.isBpmLoggedIn(); + } else if (provider === 'ECM') { + return this.isEcmLoggedIn(); + } else { + return this.isLoggedIn(); + } + } + /** * Does the provider support OAuth? * @returns True if supported, false otherwise diff --git a/lib/extensions/src/lib/config/navbar.extensions.ts b/lib/extensions/src/lib/config/navbar.extensions.ts index af9b48bbce..edfa37f127 100644 --- a/lib/extensions/src/lib/config/navbar.extensions.ts +++ b/lib/extensions/src/lib/config/navbar.extensions.ts @@ -25,6 +25,7 @@ export interface NavBarLinkRef extends ExtensionElement { icon: string; title: string; route: string; + provider?: string; url?: string; // evaluated at runtime based on route ref description?: string; diff --git a/lib/extensions/src/lib/config/schema/plugin-extension.schema.json b/lib/extensions/src/lib/config/schema/plugin-extension.schema.json index b8e576e901..f8b679245d 100644 --- a/lib/extensions/src/lib/config/schema/plugin-extension.schema.json +++ b/lib/extensions/src/lib/config/schema/plugin-extension.schema.json @@ -178,6 +178,11 @@ "description": "Unique identifier", "type": "string" }, + "provider": { + "description": "Define on which system the user should be authenticate", + "type": "string", + "enum": ["BPM", "ECM", "ALL"] + }, "icon": { "description": "Element icon", "type": "string"