diff --git a/package-lock.json b/package-lock.json index 8bdcbcd42..51b0eb0d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,12 +11,12 @@ "dev": true }, "@alfresco/adf-cli": { - "version": "6.0.0-A.2-8247", - "resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-6.0.0-A.2-8247.tgz", - "integrity": "sha512-Opx1WBl37qwWqRGj0ZCj0CPiOrSBzVsdWA8kuVviUqUv2Hjcj68G1QDY1u0HWglBb2rzayta0q8BcZFX+bI7Yg==", + "version": "6.0.0-A.2-8187", + "resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-6.0.0-A.2-8187.tgz", + "integrity": "sha512-v+QhbjhVvDFZPUK+Q+BxejNmVAPhnwixVVhrNaEvVRonef66+sCuJBpDmAyaMjFV+fwxauHKie4f3SleSNreqA==", "dev": true, "requires": { - "@alfresco/js-api": "5.4.0-620", + "@alfresco/js-api": "5.4.0-643", "commander": "6.2.1", "ejs": "^2.6.1", "license-checker": "^25.0.1", @@ -28,9 +28,9 @@ }, "dependencies": { "@alfresco/js-api": { - "version": "5.4.0-620", - "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-5.4.0-620.tgz", - "integrity": "sha512-Y1zgLAnAe+bXAhuqV6LzbY+2HlAe0UOy0lsVWKmNCwVQS8hTcKip8H7bI6E4MUoIy/kwRYT6emitBbPsSLQFDA==", + "version": "5.4.0-643", + "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-5.4.0-643.tgz", + "integrity": "sha512-OBlF/Le/IoHcIz5T9oWOucPc+9ZruuG1jJ9wM78qZx/8d6F03NvnCLDlYB5dapRBPqq2KfkuULp0gBtvgCpbDQ==", "dev": true, "requires": { "event-emitter": "^0.3.5", @@ -42,17 +42,17 @@ } }, "@alfresco/adf-content-services": { - "version": "6.0.0-A.2-8219", - "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-6.0.0-A.2-8219.tgz", - "integrity": "sha512-jdW8rba7Ajqgw6zvt3Gws5qrM6KUikx20MMdNjN9iqvxMfg52oRKotnRMfv4Cvp6KZZ/ZxkvBgJPdatMdgupBw==", + "version": "6.0.0-A.2-8187", + "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-6.0.0-A.2-8187.tgz", + "integrity": "sha512-YUfeXKk57qvpCGk9mmDM3AKxZkP0G/8iXlQG75X7srgCk/34jAFs16G+rt6WIyxA3xKqfqQmKtZb2IAo8GsAAg==", "requires": { "tslib": "^2.3.0" } }, "@alfresco/adf-core": { - "version": "6.0.0-A.2-8219", - "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-6.0.0-A.2-8219.tgz", - "integrity": "sha512-q8noKqXRrHGTVSMyf9fVOc2RU1pkVdbtFZep5j5zZlCHgNSsOOyrt6lww+PtlYYb78tu9ifu3MjJJy70mcsxgg==", + "version": "6.0.0-A.2-8187", + "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-6.0.0-A.2-8187.tgz", + "integrity": "sha512-F28WqEqkfDz0TA1XUN29TnHZc0n4Z3ijliI6DuHqCBe1s6un2QE22DOCMT6iiJqI4+EzNacbF0MOoGG84yUSVA==", "requires": { "@editorjs/code": "2.7.0", "@editorjs/editorjs": "^2.26.5", @@ -70,20 +70,20 @@ } }, "@alfresco/adf-extensions": { - "version": "6.0.0-A.2-8219", - "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-6.0.0-A.2-8219.tgz", - "integrity": "sha512-E1QY70+pO0/pi9JDXmTG0X/Qo9MVbEIO4/fq4sfT2NAufFtcNHYVaAXU4uMOB/KQZmbprzHdj9lMfFsnhY74+g==", + "version": "6.0.0-A.2-8187", + "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-6.0.0-A.2-8187.tgz", + "integrity": "sha512-s0m/A3ACrVrGkhsCCuyvLd0LIu8PfvanJfKIhVvQr6kljB1IArYSwPc7ZVb0fyhgLZtuQOd2UbieiyCQDhYxFg==", "requires": { "tslib": "^2.3.0" } }, "@alfresco/adf-testing": { - "version": "6.0.0-A.2-8247", - "resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-6.0.0-A.2-8247.tgz", - "integrity": "sha512-tf1NQv7JiOsMNyFtPeoUWFo0/xY/ZG1Pz5+J94gUfLG7ZKwmrzlKf6KseFZWVY7UaiKIr+yJjqEE65JiLPqPLA==", + "version": "6.0.0-A.2-8187", + "resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-6.0.0-A.2-8187.tgz", + "integrity": "sha512-fnX9YG9x6u+TRKYVP1sROlncvx0X8MFDHRzAUtkbJgIJKnCgVx7Ty6CTUXXTTaExrS7XFF64I9khTck3zHyaUQ==", "dev": true, "requires": { - "@alfresco/js-api": "5.4.0-619", + "@alfresco/js-api": "5.4.0-639", "@angular/compiler": "14.1.3", "@angular/core": "14.1.3", "rxjs": "6.6.6", @@ -112,9 +112,9 @@ } }, "@alfresco/js-api": { - "version": "5.4.0-619", - "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-5.4.0-619.tgz", - "integrity": "sha512-siG1unqnnR9VUt1CM5EUEZvX7UcHGp84Ubb/H1arbNaIdKCyDWlxyTD5uCt4s2PrnCoWKUU5/YukkOOeAY2bdA==", + "version": "5.4.0-639", + "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-5.4.0-639.tgz", + "integrity": "sha512-Y7rYj0kQGlfuahM2qg4hVrZxvj7yL+cKLCuspT7Io+60iIwmwMkpxZt2XX0YwIVzgofsFhcPdNTmSipx6vAQZQ==", "requires": { "event-emitter": "^0.3.5", "minimatch": "5.0.1", diff --git a/package.json b/package.json index 45f8cc273..5529085ac 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,10 @@ }, "private": true, "dependencies": { - "@alfresco/adf-content-services": "6.0.0-A.2-8219", - "@alfresco/adf-core": "6.0.0-A.2-8219", - "@alfresco/adf-extensions": "6.0.0-A.2-8219", - "@alfresco/js-api": "5.4.0-619", + "@alfresco/adf-content-services": "6.0.0-A.2-8187", + "@alfresco/adf-core": "6.0.0-A.2-8187", + "@alfresco/adf-extensions": "6.0.0-A.2-8187", + "@alfresco/js-api": "5.4.0-639", "@angular/animations": "14.1.2", "@angular/cdk": "14.1.2", "@angular/common": "14.1.2", @@ -59,8 +59,8 @@ "zone.js": "0.11.8" }, "devDependencies": { - "@alfresco/adf-cli": "6.0.0-A.2-8247", - "@alfresco/adf-testing": "6.0.0-A.2-8247", + "@alfresco/adf-cli": "6.0.0-A.2-8187", + "@alfresco/adf-testing": "6.0.0-A.2-8187", "@angular-custom-builders/lite-serve": "^0.2.3", "@angular-devkit/build-angular": "14.1.2", "@angular-eslint/builder": "^14.1.2", diff --git a/projects/aca-content/src/lib/aca-content.module.ts b/projects/aca-content/src/lib/aca-content.module.ts index fb049c690..3d6365c26 100644 --- a/projects/aca-content/src/lib/aca-content.module.ts +++ b/projects/aca-content/src/lib/aca-content.module.ts @@ -33,8 +33,7 @@ import { DebugAppConfigService, AuthGuardEcm, LanguagePickerComponent, - NotificationHistoryComponent, - UserInfoComponent + NotificationHistoryComponent } from '@alfresco/adf-core'; import { ContentModule, @@ -121,6 +120,7 @@ import { AppTrashcanModule } from './components/trashcan/trashcan.module'; import { AppSharedLinkViewModule } from './components/shared-link-view/shared-link-view.module'; import { AcaFolderRulesModule } from '@alfresco/aca-folder-rules'; import { TagsColumnComponent } from './components/dl-custom-components/tags-column/tags-column.component'; +import { UserInfoComponent } from './components/common/user-info/user-info.component'; registerLocaleData(localeFr); registerLocaleData(localeDe); diff --git a/projects/aca-content/src/lib/components/common/common.module.ts b/projects/aca-content/src/lib/components/common/common.module.ts index e92a2c295..5f794f01a 100644 --- a/projects/aca-content/src/lib/components/common/common.module.ts +++ b/projects/aca-content/src/lib/components/common/common.module.ts @@ -32,10 +32,20 @@ import { LocationLinkComponent } from './location-link/location-link.component'; import { ToggleSharedComponent } from './toggle-shared/toggle-shared.component'; import { LanguagePickerComponent } from './language-picker/language-picker.component'; import { LogoutComponent } from './logout/logout.component'; +import { ContentModule } from '@alfresco/adf-content-services'; +import { UserInfoComponent } from './user-info/user-info.component'; @NgModule({ - imports: [CommonModule, CoreModule.forChild(), ExtensionsModule, GenericErrorModule], - declarations: [LocationLinkComponent, ToggleSharedComponent, LanguagePickerComponent, LogoutComponent], - exports: [ExtensionsModule, LocationLinkComponent, GenericErrorModule, ToggleSharedComponent, LanguagePickerComponent, LogoutComponent] + imports: [CommonModule, CoreModule.forChild(), ContentModule.forChild(), ExtensionsModule, GenericErrorModule], + declarations: [LocationLinkComponent, ToggleSharedComponent, LanguagePickerComponent, LogoutComponent, UserInfoComponent], + exports: [ + ExtensionsModule, + LocationLinkComponent, + GenericErrorModule, + ToggleSharedComponent, + LanguagePickerComponent, + LogoutComponent, + UserInfoComponent + ] }) export class AppCommonModule {} diff --git a/projects/aca-content/src/lib/components/common/user-info/user-info.component.html b/projects/aca-content/src/lib/components/common/user-info/user-info.component.html new file mode 100644 index 000000000..2b07657e2 --- /dev/null +++ b/projects/aca-content/src/lib/components/common/user-info/user-info.component.html @@ -0,0 +1,14 @@ + + + + \ No newline at end of file diff --git a/projects/aca-content/src/lib/components/common/user-info/user-info.component.ts b/projects/aca-content/src/lib/components/common/user-info/user-info.component.ts new file mode 100644 index 000000000..b34695589 --- /dev/null +++ b/projects/aca-content/src/lib/components/common/user-info/user-info.component.ts @@ -0,0 +1,67 @@ +/* + * Copyright © 2005 - 2021 Alfresco Software, Ltd. All rights reserved. + * + * License rights for this program may be obtained from Alfresco Software, Ltd. + * pursuant to a written agreement and any use of this program without such an + * agreement is prohibited. + */ + +import { EcmUserModel, IdentityUserModel, PeopleContentService, IdentityUserService, AuthenticationService, UserInfoMode } from '@alfresco/adf-core'; +import { Component, OnInit } from '@angular/core'; +import { Observable, of } from 'rxjs'; + +@Component({ + selector: 'app-user-info', + templateUrl: './user-info.component.html' +}) +export class UserInfoComponent implements OnInit { + mode: UserInfoMode; + ecmUser$: Observable; + identityUser$: Observable; + selectedIndex: number; + userInfoMode = UserInfoMode; + + constructor( + private peopleContentService: PeopleContentService, + private identityUserService: IdentityUserService, + private authService: AuthenticationService + ) {} + + ngOnInit() { + this.getUserInfo(); + } + + getUserInfo() { + if (this.authService.isOauth()) { + this.loadIdentityUserInfo(); + this.mode = UserInfoMode.SSO; + + if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) { + this.mode = UserInfoMode.CONTENT_SSO; + this.loadEcmUserInfo(); + } + } else if (this.isEcmLoggedIn()) { + this.loadEcmUserInfo(); + this.mode = UserInfoMode.CONTENT; + } + } + + get isLoggedIn(): boolean { + if (this.authService.isKerberosEnabled()) { + return true; + } + return this.authService.isLoggedIn(); + } + + private loadEcmUserInfo(): void { + this.ecmUser$ = this.peopleContentService.getCurrentUserInfo(); + } + + private loadIdentityUserInfo() { + this.identityUser$ = of(this.identityUserService.getCurrentUserInfo()); + } + + private isEcmLoggedIn() { + return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled()); + } +}