@igo2/auth 16.0.2 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/esm2022/lib/auth-form/auth-facebook.component.mjs +9 -11
  2. package/esm2022/lib/auth-form/auth-form.component.mjs +21 -148
  3. package/esm2022/lib/auth-form/auth-google.component.mjs +9 -11
  4. package/esm2022/lib/auth-form/auth-intern.component.mjs +11 -75
  5. package/esm2022/lib/auth-form/auth-microsoft.component.mjs +12 -22
  6. package/esm2022/lib/auth-form/auth-microsoftb2c.component.mjs +12 -22
  7. package/esm2022/lib/auth-monitoring/auth-monitoring.provider.mjs +23 -0
  8. package/esm2022/lib/auth-monitoring/auth-monitoring.service.mjs +53 -0
  9. package/esm2022/lib/auth-routing.module.mjs +12 -13
  10. package/esm2022/lib/auth.module.mjs +43 -44
  11. package/esm2022/lib/shared/admin.guard.mjs +10 -11
  12. package/esm2022/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +9 -9
  13. package/esm2022/lib/shared/auth-msalServiceb2c.service..mjs +9 -9
  14. package/esm2022/lib/shared/auth-storage.interface.mjs +2 -0
  15. package/esm2022/lib/shared/auth-storage.service.mjs +99 -0
  16. package/esm2022/lib/shared/auth.guard.mjs +9 -9
  17. package/esm2022/lib/shared/auth.interceptor.mjs +10 -13
  18. package/esm2022/lib/shared/auth.interface.mjs +1 -1
  19. package/esm2022/lib/shared/auth.service.mjs +18 -14
  20. package/esm2022/lib/shared/index.mjs +4 -3
  21. package/esm2022/lib/shared/logged.guard.mjs +9 -9
  22. package/esm2022/lib/shared/profils.guard.mjs +9 -9
  23. package/esm2022/lib/shared/protected.directive.mjs +9 -9
  24. package/esm2022/lib/shared/token.interface.mjs +2 -0
  25. package/esm2022/lib/shared/token.service.mjs +10 -10
  26. package/esm2022/public_api.mjs +6 -3
  27. package/fesm2022/igo2-auth.mjs +291 -441
  28. package/fesm2022/igo2-auth.mjs.map +1 -1
  29. package/lib/auth-monitoring/auth-monitoring.provider.d.ts +3 -0
  30. package/lib/auth-monitoring/auth-monitoring.service.d.ts +14 -0
  31. package/lib/shared/{storage.service.d.ts → auth-storage.service.d.ts} +1 -1
  32. package/lib/shared/auth.interface.d.ts +3 -5
  33. package/lib/shared/auth.service.d.ts +3 -1
  34. package/lib/shared/index.d.ts +3 -2
  35. package/lib/shared/token.interface.d.ts +5 -0
  36. package/lib/shared/token.service.d.ts +2 -1
  37. package/package.json +20 -22
  38. package/public_api.d.ts +5 -2
  39. package/esm2022/lib/shared/storage.interface.mjs +0 -2
  40. package/esm2022/lib/shared/storage.service.mjs +0 -99
  41. /package/lib/shared/{storage.interface.d.ts → auth-storage.interface.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-auth.mjs","sources":["../../../packages/auth/src/lib/shared/token.service.ts","../../../packages/auth/src/lib/shared/auth.service.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.html","../../../packages/auth/src/lib/auth-form/auth-intern.component.html","../../../packages/auth/src/lib/auth-form/auth-intern.component.ts","../../../packages/auth/src/lib/auth-form/auth-facebook.component.ts","../../../packages/auth/src/lib/auth-form/auth-facebook.component.html","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.html","../../../packages/auth/src/lib/shared/auth-msalServiceb2c.service..ts","../../../packages/auth/src/lib/shared/auth-msalBroadcastServiceb2c.service.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.html","../../../packages/auth/src/lib/auth-form/auth-form.component.html","../../../packages/auth/src/lib/auth-form/auth-form.component.ts","../../../packages/auth/src/lib/shared/logged.guard.ts","../../../packages/auth/src/lib/shared/auth.guard.ts","../../../packages/auth/src/lib/shared/admin.guard.ts","../../../packages/auth/src/lib/shared/profils.guard.ts","../../../packages/auth/src/lib/shared/auth.interceptor.ts","../../../packages/auth/src/lib/shared/auth-microsoft.provider.ts","../../../packages/auth/src/lib/shared/protected.directive.ts","../../../packages/auth/src/lib/shared/storage.service.ts","../../../packages/auth/src/lib/auth-routing.module.ts","../../../packages/auth/src/lib/auth.module.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport jwtDecode from 'jwt-decode';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n private options?: AuthOptions;\r\n private tokenKey: string;\r\n\r\n constructor(private injector: Injector) {\r\n const config = this.injector.get<ConfigService>(ConfigService);\r\n this.options = config.getConfig('auth');\r\n this.tokenKey = this.options?.tokenKey;\r\n }\r\n\r\n set(token: string) {\r\n localStorage.setItem(this.tokenKey, token);\r\n }\r\n\r\n remove() {\r\n localStorage.removeItem(this.tokenKey);\r\n }\r\n\r\n get(): string {\r\n return localStorage.getItem(this.tokenKey);\r\n }\r\n\r\n decode() {\r\n const token = this.get();\r\n if (!token) {\r\n return;\r\n }\r\n return jwtDecode(token);\r\n }\r\n\r\n isExpired() {\r\n const jwt = this.decode();\r\n const currentTime = new Date().getTime() / 1000;\r\n if (jwt && currentTime < jwt.exp) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ConfigService, LanguageService, MessageService } from '@igo2/core';\r\nimport { Base64 } from '@igo2/utils';\r\n\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { globalCacheBusterNotifier } from 'ts-cacheable';\r\n\r\nimport { AuthOptions, IInfosUser, User } from './auth.interface';\r\nimport { TokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\r\n public logged$ = new BehaviorSubject<boolean>(undefined);\r\n public redirectUrl: string;\r\n public languageForce = false;\r\n private anonymous = false;\r\n private authOptions: AuthOptions;\r\n\r\n get hasAuthService() {\r\n return this.authOptions?.url !== undefined;\r\n }\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private tokenService: TokenService,\r\n private config: ConfigService,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n @Optional() private router: Router\r\n ) {\r\n this.authOptions = this.config.getConfig('auth');\r\n this.authenticate$.next(this.authenticated);\r\n this.authenticate$.subscribe((authenticated) => {\r\n this.logged$.next(authenticated);\r\n globalCacheBusterNotifier.next();\r\n });\r\n }\r\n\r\n login(username: string, password: string): Observable<void> {\r\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n\r\n const body = {\r\n username,\r\n password: this.encodePassword(password)\r\n };\r\n\r\n return this.loginCall(body, myHeader);\r\n }\r\n\r\n loginWithToken(\r\n token: string,\r\n type: string,\r\n infosUser?: IInfosUser\r\n ): Observable<void> {\r\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n\r\n const body = {\r\n token,\r\n typeConnection: type,\r\n infosUser\r\n };\r\n\r\n return this.loginCall(body, myHeader);\r\n }\r\n\r\n loginAnonymous(): Observable<boolean> {\r\n this.anonymous = true;\r\n this.logged$.next(true);\r\n return of(true);\r\n }\r\n\r\n refresh(): Observable<void> {\r\n return this.http.post(`${this.authOptions?.url}/refresh`, {}).pipe(\r\n tap((data: any) => {\r\n this.tokenService.set(data.token);\r\n }),\r\n catchError((err) => {\r\n err.error.caught = true;\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n logout(): Observable<boolean> {\r\n this.anonymous = false;\r\n this.tokenService.remove();\r\n this.authenticate$.next(false);\r\n return of(true);\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return !this.tokenService.isExpired();\r\n }\r\n\r\n getToken(): string {\r\n return this.tokenService.get();\r\n }\r\n\r\n decodeToken() {\r\n if (this.isAuthenticated()) {\r\n return this.tokenService.decode();\r\n }\r\n return false;\r\n }\r\n\r\n goToRedirectUrl() {\r\n if (!this.router) {\r\n return;\r\n }\r\n const redirectUrl = this.redirectUrl || this.router.url;\r\n\r\n if (redirectUrl === this.authOptions.loginRoute) {\r\n const homeRoute = this.authOptions.homeRoute || '/';\r\n this.router.navigateByUrl(homeRoute);\r\n } else if (redirectUrl) {\r\n this.router.navigateByUrl(redirectUrl);\r\n }\r\n }\r\n\r\n getUserInfo(): Observable<User> {\r\n const url = this.authOptions?.url + '/info';\r\n return this.http.get<User>(url);\r\n }\r\n\r\n getProfils(): Observable<{ profils: string[] }> {\r\n return this.http.get<{ profils: string[] }>(\r\n `${this.authOptions?.url}/profils`\r\n );\r\n }\r\n\r\n updateUser(user: User): Observable<User> {\r\n return this.http.patch<User>(this.authOptions?.url, user);\r\n }\r\n\r\n private encodePassword(password: string) {\r\n return Base64.encode(password);\r\n }\r\n\r\n // authenticated or anonymous\r\n get logged(): boolean {\r\n return this.authenticated || this.isAnonymous;\r\n }\r\n\r\n get isAnonymous(): boolean {\r\n return this.anonymous;\r\n }\r\n\r\n get authenticated(): boolean {\r\n return this.isAuthenticated();\r\n }\r\n\r\n get isAdmin(): boolean {\r\n const token = this.decodeToken();\r\n if (token && token.user && token.user.isAdmin) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private loginCall(body, headers) {\r\n return this.http\r\n .post(`${this.authOptions?.url}/login`, body, { headers })\r\n .pipe(\r\n tap((data: any) => {\r\n this.tokenService.set(data.token);\r\n const tokenDecoded = this.decodeToken();\r\n if (tokenDecoded && tokenDecoded.user) {\r\n if (tokenDecoded.user.locale && !this.languageForce) {\r\n this.languageService.setLanguage(tokenDecoded.user.locale);\r\n }\r\n if (tokenDecoded.user.isExpired) {\r\n this.messageService.alert('igo.auth.error.Password expired');\r\n }\r\n }\r\n this.authenticate$.next(true);\r\n }),\r\n catchError((err) => {\r\n err.error.caught = true;\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService, LanguageService } from '@igo2/core';\r\n\r\nimport { AuthGoogleOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-google',\r\n templateUrl: './auth-google.component.html',\r\n styleUrls: ['./auth-google.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthGoogleComponent {\r\n private options?: AuthGoogleOptions;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private languageService: LanguageService,\r\n private appRef: ApplicationRef\r\n ) {\r\n this.options = this.config.getConfig('auth.google');\r\n\r\n if (this.options?.apiKey && this.options?.clientId) {\r\n this.loadSDKGoogle();\r\n this.loadPlatform();\r\n } else {\r\n console.warn(\r\n 'Google authentification needs \"apiKey\" and \"clientId\" options'\r\n );\r\n }\r\n }\r\n\r\n public handleSignInClick() {\r\n (window as any).gapi.auth2.getAuthInstance().signIn();\r\n }\r\n\r\n public handleSignOutClick() {\r\n (window as any).gapi.auth2.getAuthInstance().signOut();\r\n }\r\n\r\n private handleClientLoad() {\r\n (window as any).gapi.load('client:auth2', () => this.initClient());\r\n }\r\n\r\n private initClient() {\r\n (window as any).gapi.client\r\n .init({\r\n apiKey: this.options?.apiKey,\r\n clientId: this.options?.clientId,\r\n discoveryDocs: [\r\n 'https://people.googleapis.com/$discovery/rest?version=v1'\r\n ],\r\n scope: 'profile'\r\n })\r\n .then(() => {\r\n this.handleSignOutClick();\r\n this.updateTextButton();\r\n (window as any).gapi.auth2\r\n .getAuthInstance()\r\n .isSignedIn.listen((rep) => {\r\n this.updateSigninStatus(rep);\r\n });\r\n });\r\n }\r\n\r\n private updateSigninStatus(isSignedIn) {\r\n this.updateTextButton();\r\n if (isSignedIn) {\r\n this.loginGoogle((window as any).gapi.client.getToken().access_token);\r\n }\r\n }\r\n\r\n private updateTextButton() {\r\n const btn = document.querySelector('span[id^=\"not_signed_\"]');\r\n if (btn && this.languageService.getLanguage() !== 'en') {\r\n if (btn.innerHTML === 'Sign in with Google') {\r\n btn.innerHTML = this.languageService.translate.instant(\r\n 'igo.auth.google.login'\r\n );\r\n } else if (btn.innerHTML === 'Signed in with Google') {\r\n btn.innerHTML = this.languageService.translate.instant(\r\n 'igo.auth.google.logged'\r\n );\r\n }\r\n }\r\n }\r\n\r\n private loginGoogle(token) {\r\n this.authService.loginWithToken(token, 'google').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n }\r\n\r\n private loadSDKGoogle() {\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'google-jssdk';\r\n js.src = 'https://apis.google.com/js/api.js';\r\n js.onload = () => {\r\n this.handleClientLoad();\r\n };\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n\r\n private loadPlatform() {\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'google-platform';\r\n js.src = 'https://apis.google.com/js/platform.js';\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n}\r\n","<div\r\n class=\"g-signin2 google-login-button\"\r\n data-height=\"40\"\r\n data-width=\"265\"\r\n data-longtitle=\"true\"\r\n></div>\r\n","<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\r\n formControlName=\"username\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n type=\"password\"\r\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\r\n formControlName=\"password\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <button mat-raised-button type=\"submit\">\r\n {{ 'igo.auth.login' | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"allowAnonymous\"\r\n mat-raised-button\r\n class=\"anonymous\"\r\n type=\"button\"\r\n [disabled]=\"loading\"\r\n (click)=\"loginAnonymous()\"\r\n >\r\n {{ 'igo.auth.accessAnonymous' | translate }}\r\n </button>\r\n <div *ngIf=\"error\">\r\n <br />\r\n <font size=\"3\" color=\"red\">{{ error }}</font>\r\n </div>\r\n</form>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\n\r\nimport { LanguageService } from '@igo2/core';\r\n\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-intern',\r\n templateUrl: './auth-intern.component.html',\r\n styleUrls: ['./auth-intern.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class AuthInternComponent {\r\n @Input()\r\n get allowAnonymous(): boolean {\r\n return this._allowAnonymous;\r\n }\r\n set allowAnonymous(value: boolean) {\r\n this._allowAnonymous = value;\r\n }\r\n private _allowAnonymous = true;\r\n\r\n public error = '';\r\n public form: UntypedFormGroup;\r\n public loading = false;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private languageService: LanguageService,\r\n fb: UntypedFormBuilder\r\n ) {\r\n this.form = fb.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n });\r\n }\r\n\r\n loginUser(values: any) {\r\n this.loading = true;\r\n this.auth.login(values.username, values.password).subscribe(\r\n () => {\r\n this.login.emit(true);\r\n this.loading = false;\r\n },\r\n (error: any) => {\r\n try {\r\n this.languageService.translate\r\n .get('igo.auth.error.' + error.error.message)\r\n .subscribe((errorMsg) => (this.error = errorMsg));\r\n } catch (e) {\r\n this.error = error.error.message;\r\n }\r\n this.loading = false;\r\n }\r\n );\r\n return false;\r\n }\r\n\r\n loginAnonymous() {\r\n this.auth.loginAnonymous().subscribe(() => {\r\n this.login.emit(true);\r\n });\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthFacebookOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-facebook',\r\n templateUrl: './auth-facebook.component.html',\r\n styleUrls: ['./auth-facebook.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthFacebookComponent {\r\n private options?: AuthFacebookOptions;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private appRef: ApplicationRef\r\n ) {\r\n this.options = this.config.getConfig('auth.facebook');\r\n\r\n if (this.options?.appId) {\r\n this.loadSDKFacebook();\r\n } else {\r\n console.warn('Facebook authentification needs \"appId\" option');\r\n }\r\n }\r\n\r\n private subscribeEvents() {\r\n (window as any).FB.Event.subscribe('auth.statusChange', (rep) => {\r\n this.statusChangeCallback(rep);\r\n });\r\n }\r\n\r\n private statusChangeCallback(response) {\r\n if (response.status === 'connected') {\r\n const accessToken = response.authResponse.accessToken;\r\n this.loginFacebook(accessToken);\r\n }\r\n }\r\n\r\n private loginFacebook(token) {\r\n this.authService.loginWithToken(token, 'facebook').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n }\r\n\r\n private loadSDKFacebook() {\r\n if (document.getElementById('facebook-jssdk')) {\r\n return;\r\n }\r\n\r\n const urlSDK =\r\n 'https://connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.9';\r\n\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'facebook-jssdk';\r\n js.src = `${urlSDK}&appId=${this.options?.appId}`;\r\n js.onload = () => {\r\n this.subscribeEvents();\r\n };\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n}\r\n","<div\r\n scope=\"public_profile,email\"\r\n class=\"fb-login-button\"\r\n data-max-rows=\"1\"\r\n data-size=\"large\"\r\n data-button-type=\"login_with\"\r\n data-show-faces=\"false\"\r\n data-auto-logout-link=\"false\"\r\n data-use-continue-as=\"false\"\r\n></div>\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport {\r\n MSAL_GUARD_CONFIG,\r\n MsalBroadcastService,\r\n MsalService\r\n} from '@azure/msal-angular';\r\nimport {\r\n AuthenticationResult,\r\n InteractionRequiredAuthError,\r\n InteractionStatus,\r\n PopupRequest,\r\n PublicClientApplication,\r\n SilentRequest\r\n} from '@azure/msal-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport {\r\n AuthMicrosoftOptions,\r\n MSPMsalGuardConfiguration\r\n} from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-microsoft',\r\n templateUrl: './auth-microsoft.component.html',\r\n styleUrls: ['./auth-microsoft.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthMicrosoftComponent {\r\n private options?: AuthMicrosoftOptions;\r\n private readonly _destroying$ = new Subject<void>();\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private broadcastService: MsalBroadcastService;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private appRef: ApplicationRef,\r\n private msalService: MsalService,\r\n @Inject(MSAL_GUARD_CONFIG)\r\n private msalGuardConfig: MSPMsalGuardConfiguration[]\r\n ) {\r\n this.options = this.config.getConfig('auth.microsoft');\r\n\r\n this.msalService.instance = new PublicClientApplication({\r\n auth: this.options,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n this.broadcastService = new MsalBroadcastService(\r\n this.msalService.instance,\r\n this.msalService\r\n );\r\n\r\n if (this.options?.clientId) {\r\n this.broadcastService.inProgress$\r\n .pipe(\r\n filter(\r\n (status: InteractionStatus) => status === InteractionStatus.None\r\n ),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe(() => {\r\n this.checkAccount();\r\n });\r\n } else {\r\n console.warn('Microsoft authentification needs \"clientId\" option');\r\n }\r\n }\r\n\r\n public loginMicrosoft() {\r\n this.msalService\r\n .loginPopup({ ...this.getConf().authRequest } as PopupRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.msalService.instance.setActiveAccount(response.account);\r\n this.checkAccount();\r\n });\r\n }\r\n\r\n private checkAccount() {\r\n this.msalService.instance\r\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\r\n .then((response: AuthenticationResult) => {\r\n const tokenAccess = response.accessToken;\r\n const tokenId = response.idToken;\r\n this.authService\r\n .loginWithToken(tokenAccess, 'microsoft', { tokenId })\r\n .subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n })\r\n .catch(async (error) => {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n // fallback to interaction when silent call fails\r\n return this.msalService.acquireTokenPopup(\r\n this.getConf().authRequest as SilentRequest\r\n );\r\n }\r\n console.log(error);\r\n })\r\n .catch((error) => {\r\n console.log('Silent token fails');\r\n });\r\n }\r\n\r\n private getConf(): MSPMsalGuardConfiguration {\r\n return this.msalGuardConfig.filter((conf) => conf.type === 'add')[0];\r\n }\r\n}\r\n","<button\r\n class=\"microsoft-login-button\"\r\n mat-raised-button\r\n (click)=\"loginMicrosoft()\"\r\n>\r\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\r\n {{ 'igo.auth.microsoft.login' | translate }}\r\n</button>\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { Location } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\n\r\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\r\nimport { IMsalService } from '@azure/msal-angular';\r\nimport {\r\n AuthenticationResult,\r\n EndSessionPopupRequest,\r\n EndSessionRequest,\r\n IPublicClientApplication,\r\n Logger,\r\n PopupRequest,\r\n RedirectRequest,\r\n SilentRequest,\r\n SsoSilentRequest,\r\n WrapperSKU\r\n} from '@azure/msal-browser';\r\nimport { Observable, from } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class MsalServiceb2c implements IMsalService {\r\n private redirectHash: string;\r\n private logger: Logger;\r\n private name = '@azure/msal-angular';\r\n private version = '2.0.0-beta.2';\r\n constructor(\r\n @Inject(MSAL_INSTANCE) public instance: IPublicClientApplication,\r\n private location: Location\r\n ) {\r\n const hash = this.location.path(true).split('#').pop();\r\n if (hash) {\r\n this.redirectHash = `#${hash}`;\r\n }\r\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, this.version);\r\n }\r\n\r\n initialize(): Observable<void> {\r\n return from(this.instance.initialize());\r\n }\r\n\r\n acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult> {\r\n return from(this.instance.acquireTokenPopup(request));\r\n }\r\n acquireTokenRedirect(request: RedirectRequest): Observable<void> {\r\n return from(this.instance.acquireTokenRedirect(request));\r\n }\r\n acquireTokenSilent(\r\n silentRequest: SilentRequest\r\n ): Observable<AuthenticationResult> {\r\n return from(this.instance.acquireTokenSilent(silentRequest));\r\n }\r\n handleRedirectObservable(hash?: string): Observable<AuthenticationResult> {\r\n return from(this.instance.handleRedirectPromise(hash || this.redirectHash));\r\n }\r\n loginPopup(request?: PopupRequest): Observable<AuthenticationResult> {\r\n return from(this.instance.loginPopup(request));\r\n }\r\n loginRedirect(request?: RedirectRequest): Observable<void> {\r\n return from(this.instance.loginRedirect(request));\r\n }\r\n logout(logoutRequest?: EndSessionRequest): Observable<void> {\r\n return from(this.instance.logout(logoutRequest));\r\n }\r\n logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void> {\r\n return from(this.instance.logoutRedirect(logoutRequest));\r\n }\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Observable<void> {\r\n return from(this.instance.logoutPopup(logoutRequest));\r\n }\r\n ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult> {\r\n return from(this.instance.ssoSilent(request));\r\n }\r\n /**\r\n * Gets logger for msal-angular.\r\n * If no logger set, returns logger instance created with same options as msal-browser\r\n */\r\n getLogger(): Logger {\r\n if (!this.logger) {\r\n this.logger = this.instance.getLogger().clone(this.name, this.version);\r\n }\r\n return this.logger;\r\n }\r\n // Create a logger instance for msal-angular with the same options as msal-browser\r\n setLogger(logger: Logger): void {\r\n this.logger = logger.clone(this.name, this.version);\r\n this.instance.setLogger(logger);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { Inject, Injectable } from '@angular/core';\r\n\r\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\r\nimport {\r\n EventMessage,\r\n EventMessageUtils,\r\n IPublicClientApplication,\r\n InteractionStatus\r\n} from '@azure/msal-browser';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\n\r\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\r\n\r\n@Injectable()\r\nexport class MsalBroadcastServiceb2c {\r\n private _msalSubject: Subject<EventMessage>;\r\n public msalSubject$: Observable<EventMessage>;\r\n private _inProgress: BehaviorSubject<InteractionStatus>;\r\n public inProgress$: Observable<InteractionStatus>;\r\n\r\n constructor(\r\n @Inject(MSAL_INSTANCE) private msalInstance: IPublicClientApplication,\r\n private authService: MsalServiceb2c\r\n ) {\r\n this._msalSubject = new Subject<EventMessage>();\r\n this.msalSubject$ = this._msalSubject.asObservable();\r\n\r\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\r\n this._inProgress = new BehaviorSubject<InteractionStatus>(\r\n InteractionStatus.Startup\r\n );\r\n this.inProgress$ = this._inProgress.asObservable();\r\n\r\n this.msalInstance.addEventCallback((message: EventMessage) => {\r\n this._msalSubject.next(message);\r\n const status = EventMessageUtils.getInteractionStatusFromEvent(message);\r\n if (status !== null) {\r\n this.authService\r\n .getLogger()\r\n .verbose(\r\n `BroadcastService - ${message.eventType} results in setting inProgress to ${status}`\r\n );\r\n this._inProgress.next(status);\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { MSAL_GUARD_CONFIG } from '@azure/msal-angular';\r\nimport {\r\n AuthenticationResult,\r\n InteractionRequiredAuthError,\r\n InteractionStatus,\r\n PopupRequest,\r\n PublicClientApplication,\r\n SilentRequest\r\n} from '@azure/msal-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { MsalBroadcastServiceb2c } from '../shared/auth-msalBroadcastServiceb2c.service';\r\nimport { MsalServiceb2c } from '../shared/auth-msalServiceb2c.service.';\r\nimport {\r\n AuthMicrosoftb2cOptions,\r\n MSPMsalGuardConfiguration\r\n} from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-microsoftb2c',\r\n templateUrl: './auth-microsoftb2c.component.html',\r\n styleUrls: ['./auth-microsoftb2c.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthMicrosoftb2cComponent {\r\n private options: AuthMicrosoftb2cOptions;\r\n private readonly _destroying$ = new Subject<void>();\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private broadcastService: MsalBroadcastServiceb2c;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private appRef: ApplicationRef,\r\n private msalService: MsalServiceb2c,\r\n @Inject(MSAL_GUARD_CONFIG)\r\n private msalGuardConfig: MSPMsalGuardConfiguration[]\r\n ) {\r\n this.options = this.config.getConfig('auth.microsoftb2c') || {};\r\n\r\n this.msalService.instance = new PublicClientApplication({\r\n auth: this.options.browserAuthOptions,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n this.broadcastService = new MsalBroadcastServiceb2c(\r\n this.msalService.instance,\r\n this.msalService\r\n );\r\n\r\n if (this.options.browserAuthOptions.clientId) {\r\n this.broadcastService.inProgress$\r\n .pipe(\r\n filter(\r\n (status: InteractionStatus) => status === InteractionStatus.None\r\n ),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe(() => {\r\n this.checkAccount();\r\n });\r\n } else {\r\n console.warn('Microsoft authentification needs \"clientId\" option');\r\n }\r\n }\r\n\r\n public loginMicrosoftb2c() {\r\n this.msalService\r\n .loginPopup({ ...this.getConf().authRequest } as PopupRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.msalService.instance.setActiveAccount(response.account);\r\n this.checkAccount();\r\n });\r\n }\r\n\r\n private checkAccount() {\r\n this.msalService.instance\r\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\r\n .then((response: AuthenticationResult) => {\r\n const token = response.idToken;\r\n this.authService.loginWithToken(token, 'microsoftb2c').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n })\r\n .catch(async (error) => {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n // fallback to interaction when silent call fails\r\n return this.msalService.acquireTokenPopup(\r\n this.getConf().authRequest as SilentRequest\r\n );\r\n }\r\n })\r\n .catch((error) => {\r\n console.log('Silent token fails');\r\n });\r\n }\r\n\r\n private getConf(): MSPMsalGuardConfiguration {\r\n return this.msalGuardConfig.filter((conf) => conf.type === 'b2c')[0];\r\n }\r\n}\r\n","<button\r\n class=\"microsoft-login-button\"\r\n mat-raised-button\r\n (click)=\"loginMicrosoftb2c()\"\r\n>\r\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\r\n {{ 'igo.auth.microsoftb2c.login' | translate }}\r\n</button>\r\n","<div *ngIf=\"visible\">\r\n <div\r\n *ngIf=\"!auth.logged && backgroundDisable\"\r\n class=\"backgroundDisable\"\r\n ></div>\r\n\r\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\r\n <h1>{{ 'igo.auth.connection' | translate }}</h1>\r\n\r\n <igo-auth-google\r\n *ngIf=\"options.google && options.google.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-google>\r\n <igo-auth-microsoft\r\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoft>\r\n <igo-auth-microsoftb2c\r\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoftb2c>\r\n <igo-auth-facebook\r\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-facebook>\r\n <igo-auth-intern\r\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\r\n [allowAnonymous]=\"options.allowAnonymous\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-intern>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"auth.logged && showAlreadyConnectedDiv\"\r\n class=\"login center-block\"\r\n >\r\n <p>{{ 'igo.auth.welcome' | translate: user }}</p>\r\n <button mat-raised-button type=\"button\" (click)=\"logout()\">\r\n {{ 'igo.auth.signOut' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\r\n <p>{{ 'igo.auth.deconnection' | translate }}</p>\r\n <button\r\n *ngIf=\"options.homeRoute\"\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"home()\"\r\n >\r\n {{ 'igo.auth.home' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output\r\n} from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { AuthOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-form',\r\n templateUrl: './auth-form.component.html',\r\n styleUrls: ['./auth-form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class AuthFormComponent implements OnInit {\r\n @Input()\r\n get backgroundDisable(): boolean {\r\n if (this.isLogoutRoute || this.isLogoutRoute) {\r\n return false;\r\n }\r\n return this._backgroundDisable;\r\n }\r\n set backgroundDisable(value: boolean) {\r\n this._backgroundDisable = value.toString() === 'true';\r\n }\r\n private _backgroundDisable = true;\r\n\r\n @Input()\r\n get hasAlreadyConnectedDiv(): boolean {\r\n return this._hasAlreadyConnectedDiv;\r\n }\r\n set hasAlreadyConnectedDiv(value: boolean) {\r\n this._hasAlreadyConnectedDiv = value.toString() === 'true';\r\n }\r\n private _hasAlreadyConnectedDiv = true;\r\n\r\n @Input()\r\n get hasLogoutDiv(): boolean {\r\n return this._hasLogoutDiv;\r\n }\r\n set hasLogoutDiv(value: boolean) {\r\n this._hasLogoutDiv = value.toString() === 'true';\r\n }\r\n private _hasLogoutDiv = true;\r\n\r\n @Input()\r\n get showAlreadyConnectedDiv(): boolean {\r\n if (this.isLogoutRoute) {\r\n return this.hasAlreadyConnectedDiv;\r\n }\r\n return this._showAlreadyConnectedDiv;\r\n }\r\n set showAlreadyConnectedDiv(value: boolean) {\r\n this._showAlreadyConnectedDiv = value.toString() === 'true';\r\n }\r\n private _showAlreadyConnectedDiv = false;\r\n\r\n @Input()\r\n get showLogoutDiv(): boolean {\r\n if (this.isLogoutRoute) {\r\n return this.hasLogoutDiv;\r\n }\r\n return this._showLogoutDiv;\r\n }\r\n set showLogoutDiv(value: boolean) {\r\n this._showLogoutDiv = value.toString() === 'true';\r\n }\r\n private _showLogoutDiv = false;\r\n\r\n get showLoginDiv(): boolean {\r\n if (!this.isLogoutRoute) {\r\n return true;\r\n }\r\n }\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public options?: AuthOptions;\r\n public user;\r\n\r\n public visible = true;\r\n\r\n private isLoginRoute: boolean;\r\n private isLogoutRoute: boolean;\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private config: ConfigService,\r\n @Optional() private router: Router\r\n ) {\r\n this.options = this.config.getConfig('auth');\r\n this.visible = Object.getOwnPropertyNames(this.options).length !== 0;\r\n }\r\n\r\n public ngOnInit() {\r\n this.analyzeRoute();\r\n this.getName();\r\n }\r\n\r\n public onLogin() {\r\n this.auth.goToRedirectUrl();\r\n this.getName();\r\n this.login.emit(true);\r\n }\r\n\r\n public logout() {\r\n this.auth.logout().subscribe(() => {\r\n this.user = undefined;\r\n if (this.router) {\r\n if (this.options?.logoutRoute) {\r\n this.router.navigate([this.options?.logoutRoute]);\r\n } else if (this.options?.homeRoute) {\r\n this.router.navigate([this.options?.homeRoute]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public home() {\r\n if (this.router && this.options?.homeRoute) {\r\n this.router.navigate([this.options?.homeRoute]);\r\n }\r\n }\r\n\r\n private getName() {\r\n const tokenDecoded = this.auth.decodeToken();\r\n if (tokenDecoded) {\r\n this.user = {\r\n name: tokenDecoded.user.firstName || tokenDecoded.user.sourceId\r\n };\r\n }\r\n }\r\n\r\n private analyzeRoute() {\r\n if (!this.router) {\r\n return;\r\n }\r\n\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationStart))\r\n .subscribe((changeEvent: any) => {\r\n if (changeEvent.url) {\r\n const currentRoute = changeEvent.url;\r\n const logoutRoute = this.options?.logoutRoute;\r\n const loginRoute = this.options?.loginRoute;\r\n\r\n this.isLogoutRoute = currentRoute === logoutRoute;\r\n this.isLoginRoute = currentRoute === loginRoute;\r\n\r\n if (this.isLogoutRoute) {\r\n this.auth.logout();\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoggedGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.logged) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.authenticated) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdminGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const token = this.authService.decodeToken();\r\n if (token && token.user && token.user.isAdmin) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfilsGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n return this.authService.getProfils().pipe(\r\n map((profils: { profils: string[] }) => {\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (\r\n profils &&\r\n profils.profils &&\r\n profils.profils.some((v) => authConfig.profilsGuard.indexOf(v) !== -1)\r\n ) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n })\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { Md5 } from 'ts-md5';\r\n\r\nimport {\r\n AuthByKeyOptions,\r\n AuthOptions,\r\n WithCredentialsOptions\r\n} from './auth.interface';\r\nimport { TokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n private authOptions: AuthOptions;\r\n private refreshInProgress = false;\r\n private trustHosts: string[];\r\n private hostsWithCredentials: WithCredentialsOptions[];\r\n private hostsWithAuthByKey: AuthByKeyOptions[];\r\n\r\n constructor(\r\n private config: ConfigService,\r\n private tokenService: TokenService,\r\n private http: HttpClient\r\n ) {\r\n this.authOptions = this.config.getConfig('auth') as AuthOptions;\r\n\r\n this.trustHosts = this.authOptions?.trustHosts || [];\r\n this.trustHosts.push(window.location.hostname);\r\n\r\n this.hostsWithCredentials = this.authOptions?.hostsWithCredentials || [];\r\n this.hostsWithAuthByKey = this.authOptions?.hostsByKey || [];\r\n }\r\n\r\n intercept(\r\n originalReq: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n const withCredentials = this.handleHostsWithCredentials(originalReq.url);\r\n let req = originalReq.clone();\r\n const hostWithKey = this.handleHostsAuthByKey(originalReq.url);\r\n if (hostWithKey) {\r\n req = req.clone({\r\n params: req.params.set(hostWithKey.key, hostWithKey.value)\r\n });\r\n }\r\n if (withCredentials) {\r\n req = originalReq.clone({\r\n withCredentials\r\n });\r\n return next.handle(req);\r\n }\r\n this.refreshToken();\r\n const token = this.tokenService.get();\r\n const element = document.createElement('a');\r\n element.href = req.url;\r\n if (element.host === '') {\r\n element.href = element.href; // FIX IE11, DO NOT REMOVE\r\n }\r\n\r\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\r\n return next.handle(req);\r\n }\r\n\r\n const authHeader = `Bearer ${token}`;\r\n let authReq = req.clone({\r\n headers: req.headers.set('Authorization', authHeader)\r\n });\r\n\r\n const tokenDecoded: any = this.tokenService.decode();\r\n if (\r\n authReq.params.get('_i') === 'true' &&\r\n tokenDecoded &&\r\n tokenDecoded.user &&\r\n tokenDecoded.user.sourceId\r\n ) {\r\n const hashUser = Md5.hashStr(tokenDecoded.user.sourceId) as string;\r\n authReq = authReq.clone({\r\n params: authReq.params.set('_i', hashUser)\r\n });\r\n } else if (authReq.params.get('_i') === 'true') {\r\n authReq = authReq.clone({\r\n params: authReq.params.delete('_i')\r\n });\r\n }\r\n\r\n return next.handle(authReq);\r\n }\r\n\r\n interceptXhr(xhr, url: string): boolean {\r\n const withCredentials = this.handleHostsWithCredentials(url);\r\n if (withCredentials) {\r\n xhr.withCredentials = withCredentials;\r\n return true;\r\n }\r\n\r\n this.refreshToken();\r\n const element = document.createElement('a');\r\n element.href = url;\r\n\r\n const token = this.tokenService.get();\r\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\r\n return false;\r\n }\r\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\r\n return true;\r\n }\r\n\r\n alterUrlWithKeyAuth(url: string): string {\r\n const hostWithKey = this.handleHostsAuthByKey(url);\r\n let interceptedUrl = url;\r\n if (hostWithKey) {\r\n const urlDecomposed = interceptedUrl.split(/[?&]/);\r\n let urlWithKeyAdded = urlDecomposed.shift();\r\n const paramsToKeep = urlDecomposed.filter((p) => p.length !== 0);\r\n paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);\r\n if (paramsToKeep.length) {\r\n urlWithKeyAdded += '?' + paramsToKeep.join('&');\r\n }\r\n return urlWithKeyAdded;\r\n }\r\n return;\r\n }\r\n\r\n private handleHostsWithCredentials(reqUrl: string) {\r\n let withCredentials = false;\r\n for (const hostWithCredentials of this.hostsWithCredentials) {\r\n const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);\r\n if (domainRegex.test(reqUrl)) {\r\n withCredentials =\r\n hostWithCredentials.withCredentials !== undefined\r\n ? hostWithCredentials.withCredentials\r\n : undefined;\r\n break;\r\n }\r\n }\r\n return withCredentials;\r\n }\r\n\r\n private handleHostsAuthByKey(reqUrl: string): { key: string; value: string } {\r\n let hostWithKey;\r\n for (const hostWithAuthByKey of this.hostsWithAuthByKey) {\r\n const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);\r\n if (domainRegex.test(reqUrl)) {\r\n var replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;\r\n var keyAdded = new RegExp(replace, 'gm');\r\n if (!keyAdded.test(reqUrl)) {\r\n hostWithKey = {\r\n key: hostWithAuthByKey.keyProperty,\r\n value: hostWithAuthByKey.keyValue\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n return hostWithKey;\r\n }\r\n\r\n refreshToken() {\r\n const jwt = this.tokenService.decode();\r\n const currentTime = new Date().getTime() / 1000;\r\n\r\n if (\r\n !this.refreshInProgress &&\r\n jwt &&\r\n currentTime < jwt.exp &&\r\n currentTime > jwt.exp - 1800\r\n ) {\r\n this.refreshInProgress = true;\r\n\r\n const url = this.authOptions?.url;\r\n return this.http.post(`${url}/refresh`, {}).subscribe(\r\n (data: any) => {\r\n this.tokenService.set(data.token);\r\n this.refreshInProgress = false;\r\n },\r\n (err) => {\r\n err.error.caught = true;\r\n return err;\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { ConfigService } from '@igo2/core';\r\n\r\nimport {\r\n MSAL_GUARD_CONFIG,\r\n MSAL_INSTANCE,\r\n MsalService\r\n} from '@azure/msal-angular';\r\nimport { InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\nimport { BrowserAuthOptions } from '@azure/msal-browser';\r\n\r\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\r\nimport {\r\n AuthMicrosoftOptions,\r\n MSPMsalGuardConfiguration\r\n} from './auth.interface';\r\n\r\nexport function MSALConfigFactory(\r\n config: ConfigService\r\n): PublicClientApplication {\r\n const msConf = config.getConfig('auth.microsoft') as AuthMicrosoftOptions;\r\n\r\n msConf.redirectUri = msConf?.redirectUri || window.location.href;\r\n msConf.authority =\r\n msConf?.authority || 'https://login.microsoftonline.com/organizations';\r\n\r\n const myMsalObj = new PublicClientApplication({\r\n auth: msConf,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n return myMsalObj;\r\n}\r\n\r\nexport function MSALConfigFactoryb2c(\r\n config: ConfigService\r\n): PublicClientApplication {\r\n const msConf = config.getConfig(\r\n 'auth.microsoftb2c.browserAuthOptions'\r\n ) as BrowserAuthOptions;\r\n msConf.redirectUri = msConf?.redirectUri || window.location.href;\r\n msConf.authority =\r\n msConf?.authority || 'https://login.microsoftonline.com/organizations';\r\n\r\n const myMsalObj = new PublicClientApplication({\r\n auth: msConf,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n return myMsalObj;\r\n}\r\n\r\nexport function MSALAngularConfigFactory(\r\n config: ConfigService\r\n): MSPMsalGuardConfiguration {\r\n const msConf = config.getConfig('auth.microsoft') as AuthMicrosoftOptions;\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: ['user.read'],\r\n loginHint: 'todo'\r\n },\r\n type: 'add'\r\n };\r\n}\r\n\r\nexport function MSALAngularConfigFactoryb2c(\r\n config: ConfigService\r\n): MSPMsalGuardConfiguration {\r\n const msConf = config.getConfig(\r\n 'auth.microsoftb2c.browserAuthOptions'\r\n ) as BrowserAuthOptions;\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: [msConf?.clientId]\r\n },\r\n type: 'b2c'\r\n };\r\n}\r\n\r\nexport function provideAuthMicrosoft(type?: string) {\r\n if (type === 'b2c') {\r\n return [\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALConfigFactoryb2c,\r\n deps: [ConfigService]\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALAngularConfigFactoryb2c,\r\n deps: [ConfigService],\r\n multi: true\r\n },\r\n MsalServiceb2c\r\n ];\r\n } else {\r\n return [\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALConfigFactory,\r\n deps: [ConfigService]\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALAngularConfigFactory,\r\n deps: [ConfigService],\r\n multi: true\r\n },\r\n MsalService\r\n ];\r\n }\r\n}\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n@Directive({\r\n selector: '[igoProtected]'\r\n})\r\nexport class ProtectedDirective {\r\n constructor(authentication: AuthService, el: ElementRef) {\r\n if (!authentication.isAuthenticated()) {\r\n el.nativeElement.parentNode.removeChild(el.nativeElement);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { BaseStorage, ConfigService, StorageScope } from '@igo2/core';\r\n\r\nimport { AuthService } from './auth.service';\r\nimport { AuthStorageOptions } from './storage.interface';\r\nimport { TokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthStorageService extends BaseStorage<AuthStorageOptions> {\r\n constructor(\r\n config: ConfigService,\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private tokenService: TokenService\r\n ) {\r\n super(config);\r\n\r\n this.authService.authenticate$.subscribe((isAuthenticated) => {\r\n if (isAuthenticated && this.options.url) {\r\n this.http\r\n .get(this.options.url)\r\n .subscribe((userIgo: { preference: object }) => {\r\n if (userIgo && userIgo.preference) {\r\n for (const key of Object.keys(userIgo.preference)) {\r\n const value = userIgo.preference[key];\r\n super.set(key, value);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n set(\r\n key: string,\r\n value: string | object | boolean | number,\r\n scope: StorageScope = StorageScope.LOCAL\r\n ) {\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n const preference = {};\r\n preference[key] = value;\r\n this.http.patch(this.options.url, { preference }).subscribe();\r\n }\r\n super.set(key, value, scope);\r\n }\r\n\r\n remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n const preference = {};\r\n preference[key] = undefined;\r\n this.http.patch(this.options.url, { preference }).subscribe();\r\n }\r\n super.remove(key, scope);\r\n }\r\n\r\n clear(scope: StorageScope = StorageScope.LOCAL) {\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n this.http\r\n .patch(\r\n this.options.url,\r\n { preference: {} },\r\n {\r\n params: {\r\n mergePreference: 'false'\r\n }\r\n }\r\n )\r\n .subscribe();\r\n }\r\n\r\n let token: string;\r\n if (scope === StorageScope.LOCAL) {\r\n token = this.tokenService.get();\r\n }\r\n\r\n super.clear(scope);\r\n\r\n if (token) {\r\n this.tokenService.set(token);\r\n }\r\n\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n this.http\r\n .get(this.options.url)\r\n .subscribe((userIgo: { preference: object }) => {\r\n if (userIgo && userIgo.preference) {\r\n for (const key of Object.keys(userIgo.preference)) {\r\n const value = userIgo.preference[key];\r\n super.set(key, value);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { AuthFormComponent } from './auth-form/auth-form.component';\r\n\r\nconst routes: Routes = [\r\n { path: 'login', component: AuthFormComponent },\r\n { path: 'logout', component: AuthFormComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\nexport class AuthRoutingModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { IgoLanguageModule, StorageService } from '@igo2/core';\r\n\r\nimport { MsalModule } from '@azure/msal-angular';\r\n\r\nimport { AuthFacebookComponent } from './auth-form/auth-facebook.component';\r\nimport { AuthFormComponent } from './auth-form/auth-form.component';\r\nimport { AuthGoogleComponent } from './auth-form/auth-google.component';\r\nimport { AuthInternComponent } from './auth-form/auth-intern.component';\r\nimport { AuthMicrosoftComponent } from './auth-form/auth-microsoft.component';\r\nimport { AuthMicrosoftb2cComponent } from './auth-form/auth-microsoftb2c.component';\r\nimport { provideAuthMicrosoft } from './shared/auth-microsoft.provider';\r\nimport { AuthInterceptor } from './shared/auth.interceptor';\r\nimport { ProtectedDirective } from './shared/protected.directive';\r\nimport { AuthStorageService } from './shared/storage.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n IgoLanguageModule,\r\n MsalModule\r\n ],\r\n declarations: [\r\n AuthFormComponent,\r\n AuthGoogleComponent,\r\n AuthInternComponent,\r\n AuthFacebookComponent,\r\n AuthMicrosoftComponent,\r\n AuthMicrosoftb2cComponent,\r\n ProtectedDirective\r\n ],\r\n exports: [AuthFormComponent, ProtectedDirective]\r\n})\r\nexport class IgoAuthModule {\r\n static forRoot(): ModuleWithProviders<IgoAuthModule> {\r\n return {\r\n ngModule: IgoAuthModule,\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: StorageService,\r\n useClass: AuthStorageService\r\n },\r\n ...provideAuthMicrosoft('add'),\r\n ...provideAuthMicrosoft('b2c')\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of auth\r\n */\r\n\r\nexport { AuthFormComponent } from './lib/auth-form';\r\nexport * from './lib/environment';\r\nexport * from './lib/shared/auth.service';\r\nexport * from './lib/shared/logged.guard';\r\nexport * from './lib/shared/auth.guard';\r\nexport * from './lib/shared/admin.guard';\r\nexport * from './lib/shared/profils.guard';\r\nexport * from './lib/shared/auth.interceptor';\r\nexport * from './lib/shared/auth.interface';\r\nexport * from './lib/shared/auth-microsoft.provider';\r\nexport * from './lib/shared/protected.directive';\r\nexport * from './lib/shared/token.service';\r\nexport * from './lib/shared/storage.interface';\r\nexport * from './lib/shared/storage.service';\r\nexport * from './lib/auth-routing.module';\r\nexport * from './lib/auth.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.TokenService","i3","i4","i1.AuthService","i1","i1.MsalServiceb2c","i2","i3.AuthService","i4.TokenService"],"mappings":"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"}
1
+ {"version":3,"file":"igo2-auth.mjs","sources":["../../../packages/auth/src/lib/shared/token.service.ts","../../../packages/auth/src/lib/shared/auth.service.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.ts","../../../packages/auth/src/lib/auth-form/auth-google.component.html","../../../packages/auth/src/lib/auth-form/auth-intern.component.ts","../../../packages/auth/src/lib/auth-form/auth-intern.component.html","../../../packages/auth/src/lib/auth-form/auth-facebook.component.ts","../../../packages/auth/src/lib/auth-form/auth-facebook.component.html","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoft.component.html","../../../packages/auth/src/lib/shared/auth-msalServiceb2c.service..ts","../../../packages/auth/src/lib/shared/auth-msalBroadcastServiceb2c.service.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.ts","../../../packages/auth/src/lib/auth-form/auth-microsoftb2c.component.html","../../../packages/auth/src/lib/auth-form/auth-form.component.ts","../../../packages/auth/src/lib/auth-form/auth-form.component.html","../../../packages/auth/src/lib/shared/logged.guard.ts","../../../packages/auth/src/lib/shared/auth.guard.ts","../../../packages/auth/src/lib/shared/admin.guard.ts","../../../packages/auth/src/lib/shared/profils.guard.ts","../../../packages/auth/src/lib/shared/auth.interceptor.ts","../../../packages/auth/src/lib/shared/auth-microsoft.provider.ts","../../../packages/auth/src/lib/shared/protected.directive.ts","../../../packages/auth/src/lib/shared/auth-storage.service.ts","../../../packages/auth/src/lib/auth-monitoring/auth-monitoring.service.ts","../../../packages/auth/src/lib/auth-monitoring/auth-monitoring.provider.ts","../../../packages/auth/src/lib/auth-routing.module.ts","../../../packages/auth/src/lib/auth.module.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { IgoJwtPayload } from './token.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n private options?: AuthOptions;\r\n private tokenKey: string;\r\n\r\n constructor(private injector: Injector) {\r\n const config = this.injector.get<ConfigService>(ConfigService);\r\n this.options = config.getConfig('auth');\r\n this.tokenKey = this.options?.tokenKey;\r\n }\r\n\r\n set(token: string) {\r\n localStorage.setItem(this.tokenKey, token);\r\n }\r\n\r\n remove() {\r\n localStorage.removeItem(this.tokenKey);\r\n }\r\n\r\n get(): string {\r\n return localStorage.getItem(this.tokenKey);\r\n }\r\n\r\n decode(): IgoJwtPayload | null {\r\n const token = this.get();\r\n if (!token) {\r\n return;\r\n }\r\n return jwtDecode(token) satisfies IgoJwtPayload;\r\n }\r\n\r\n isExpired() {\r\n const jwt = this.decode();\r\n const currentTime = new Date().getTime() / 1000;\r\n if (jwt && currentTime < jwt.exp) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ConfigService, LanguageService, MessageService } from '@igo2/core';\r\nimport { Base64 } from '@igo2/utils';\r\n\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { globalCacheBusterNotifier } from 'ts-cacheable';\r\n\r\nimport { AuthOptions, IInfosUser, User } from './auth.interface';\r\nimport { IgoJwtPayload } from './token.interface';\r\nimport { TokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\r\n public logged$ = new BehaviorSubject<boolean>(undefined);\r\n public redirectUrl: string;\r\n public languageForce = false;\r\n private anonymous = false;\r\n private authOptions: AuthOptions;\r\n\r\n get hasAuthService() {\r\n return this.authOptions?.url !== undefined;\r\n }\r\n\r\n get user(): User | null {\r\n const decodedToken = this.decodeToken();\r\n return decodedToken?.user ? decodedToken.user : null;\r\n }\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private tokenService: TokenService,\r\n private config: ConfigService,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n @Optional() private router: Router\r\n ) {\r\n this.authOptions = this.config.getConfig('auth');\r\n this.authenticate$.next(this.authenticated);\r\n this.authenticate$.subscribe((authenticated) => {\r\n this.logged$.next(authenticated);\r\n globalCacheBusterNotifier.next();\r\n });\r\n }\r\n\r\n login(username: string, password: string): Observable<void> {\r\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n\r\n const body = {\r\n username,\r\n password: this.encodePassword(password)\r\n };\r\n\r\n return this.loginCall(body, myHeader);\r\n }\r\n\r\n loginWithToken(\r\n token: string,\r\n type: string,\r\n infosUser?: IInfosUser\r\n ): Observable<void> {\r\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n\r\n const body = {\r\n token,\r\n typeConnection: type,\r\n infosUser\r\n };\r\n\r\n return this.loginCall(body, myHeader);\r\n }\r\n\r\n loginAnonymous(): Observable<boolean> {\r\n this.anonymous = true;\r\n this.logged$.next(true);\r\n return of(true);\r\n }\r\n\r\n refresh(): Observable<void> {\r\n return this.http.post(`${this.authOptions?.url}/refresh`, {}).pipe(\r\n tap((data: any) => {\r\n this.tokenService.set(data.token);\r\n }),\r\n catchError((err) => {\r\n err.error.caught = true;\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n logout(): Observable<boolean> {\r\n this.anonymous = false;\r\n this.tokenService.remove();\r\n this.authenticate$.next(false);\r\n return of(true);\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return !this.tokenService.isExpired();\r\n }\r\n\r\n getToken(): string {\r\n return this.tokenService.get();\r\n }\r\n\r\n decodeToken(): IgoJwtPayload | null {\r\n if (this.isAuthenticated()) {\r\n return this.tokenService.decode();\r\n }\r\n return;\r\n }\r\n\r\n goToRedirectUrl() {\r\n if (!this.router) {\r\n return;\r\n }\r\n const redirectUrl = this.redirectUrl || this.router.url;\r\n\r\n if (redirectUrl === this.authOptions.loginRoute) {\r\n const homeRoute = this.authOptions.homeRoute || '/';\r\n this.router.navigateByUrl(homeRoute);\r\n } else if (redirectUrl) {\r\n this.router.navigateByUrl(redirectUrl);\r\n }\r\n }\r\n\r\n getUserInfo(): Observable<User> {\r\n const url = this.authOptions?.url + '/info';\r\n return this.http.get<User>(url);\r\n }\r\n\r\n getProfils(): Observable<{ profils: string[] }> {\r\n return this.http.get<{ profils: string[] }>(\r\n `${this.authOptions?.url}/profils`\r\n );\r\n }\r\n\r\n updateUser(user: User): Observable<User> {\r\n return this.http.patch<User>(this.authOptions?.url, user);\r\n }\r\n\r\n private encodePassword(password: string) {\r\n return Base64.encode(password);\r\n }\r\n\r\n // authenticated or anonymous\r\n get logged(): boolean {\r\n return this.authenticated || this.isAnonymous;\r\n }\r\n\r\n get isAnonymous(): boolean {\r\n return this.anonymous;\r\n }\r\n\r\n get authenticated(): boolean {\r\n return this.isAuthenticated();\r\n }\r\n\r\n get isAdmin(): boolean {\r\n const token = this.decodeToken();\r\n if (token?.user?.isAdmin) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private loginCall(body, headers) {\r\n return this.http\r\n .post(`${this.authOptions?.url}/login`, body, { headers })\r\n .pipe(\r\n tap((data: any) => {\r\n this.tokenService.set(data.token);\r\n const tokenDecoded = this.decodeToken();\r\n if (tokenDecoded?.user) {\r\n if (tokenDecoded.user.locale && !this.languageForce) {\r\n this.languageService.setLanguage(tokenDecoded.user.locale);\r\n }\r\n if (tokenDecoded.user.isExpired) {\r\n this.messageService.alert('igo.auth.error.Password expired');\r\n }\r\n }\r\n this.authenticate$.next(true);\r\n }),\r\n catchError((err) => {\r\n err.error.caught = true;\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService, LanguageService } from '@igo2/core';\r\n\r\nimport { AuthGoogleOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-google',\r\n templateUrl: './auth-google.component.html',\r\n styleUrls: ['./auth-google.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthGoogleComponent {\r\n private options?: AuthGoogleOptions;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private languageService: LanguageService,\r\n private appRef: ApplicationRef\r\n ) {\r\n this.options = this.config.getConfig('auth.google');\r\n\r\n if (this.options?.apiKey && this.options?.clientId) {\r\n this.loadSDKGoogle();\r\n this.loadPlatform();\r\n } else {\r\n console.warn(\r\n 'Google authentification needs \"apiKey\" and \"clientId\" options'\r\n );\r\n }\r\n }\r\n\r\n public handleSignInClick() {\r\n (window as any).gapi.auth2.getAuthInstance().signIn();\r\n }\r\n\r\n public handleSignOutClick() {\r\n (window as any).gapi.auth2.getAuthInstance().signOut();\r\n }\r\n\r\n private handleClientLoad() {\r\n (window as any).gapi.load('client:auth2', () => this.initClient());\r\n }\r\n\r\n private initClient() {\r\n (window as any).gapi.client\r\n .init({\r\n apiKey: this.options?.apiKey,\r\n clientId: this.options?.clientId,\r\n discoveryDocs: [\r\n 'https://people.googleapis.com/$discovery/rest?version=v1'\r\n ],\r\n scope: 'profile'\r\n })\r\n .then(() => {\r\n this.handleSignOutClick();\r\n this.updateTextButton();\r\n (window as any).gapi.auth2\r\n .getAuthInstance()\r\n .isSignedIn.listen((rep) => {\r\n this.updateSigninStatus(rep);\r\n });\r\n });\r\n }\r\n\r\n private updateSigninStatus(isSignedIn) {\r\n this.updateTextButton();\r\n if (isSignedIn) {\r\n this.loginGoogle((window as any).gapi.client.getToken().access_token);\r\n }\r\n }\r\n\r\n private updateTextButton() {\r\n const btn = document.querySelector('span[id^=\"not_signed_\"]');\r\n if (btn && this.languageService.getLanguage() !== 'en') {\r\n if (btn.innerHTML === 'Sign in with Google') {\r\n btn.innerHTML = this.languageService.translate.instant(\r\n 'igo.auth.google.login'\r\n );\r\n } else if (btn.innerHTML === 'Signed in with Google') {\r\n btn.innerHTML = this.languageService.translate.instant(\r\n 'igo.auth.google.logged'\r\n );\r\n }\r\n }\r\n }\r\n\r\n private loginGoogle(token) {\r\n this.authService.loginWithToken(token, 'google').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n }\r\n\r\n private loadSDKGoogle() {\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'google-jssdk';\r\n js.src = 'https://apis.google.com/js/api.js';\r\n js.onload = () => {\r\n this.handleClientLoad();\r\n };\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n\r\n private loadPlatform() {\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'google-platform';\r\n js.src = 'https://apis.google.com/js/platform.js';\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n}\r\n","<div\r\n class=\"g-signin2 google-login-button\"\r\n data-height=\"40\"\r\n data-width=\"265\"\r\n data-longtitle=\"true\"\r\n></div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\n\r\nimport { LanguageService } from '@igo2/core';\r\n\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-intern',\r\n templateUrl: './auth-intern.component.html',\r\n styleUrls: ['./auth-intern.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class AuthInternComponent {\r\n @Input()\r\n get allowAnonymous(): boolean {\r\n return this._allowAnonymous;\r\n }\r\n set allowAnonymous(value: boolean) {\r\n this._allowAnonymous = value;\r\n }\r\n private _allowAnonymous = true;\r\n\r\n public error = '';\r\n public form: UntypedFormGroup;\r\n public loading = false;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private languageService: LanguageService,\r\n fb: UntypedFormBuilder\r\n ) {\r\n this.form = fb.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n });\r\n }\r\n\r\n loginUser(values: any) {\r\n this.loading = true;\r\n this.auth.login(values.username, values.password).subscribe(\r\n () => {\r\n this.login.emit(true);\r\n this.loading = false;\r\n },\r\n (error: any) => {\r\n try {\r\n this.languageService.translate\r\n .get('igo.auth.error.' + error.error.message)\r\n .subscribe((errorMsg) => (this.error = errorMsg));\r\n } catch (e) {\r\n this.error = error.error.message;\r\n }\r\n this.loading = false;\r\n }\r\n );\r\n return false;\r\n }\r\n\r\n loginAnonymous() {\r\n this.auth.loginAnonymous().subscribe(() => {\r\n this.login.emit(true);\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\r\n formControlName=\"username\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field class=\"full-width\">\r\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\r\n <input\r\n matInput\r\n required\r\n type=\"password\"\r\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\r\n formControlName=\"password\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <button mat-raised-button type=\"submit\">\r\n {{ 'igo.auth.login' | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"allowAnonymous\"\r\n mat-raised-button\r\n class=\"anonymous\"\r\n type=\"button\"\r\n [disabled]=\"loading\"\r\n (click)=\"loginAnonymous()\"\r\n >\r\n {{ 'igo.auth.accessAnonymous' | translate }}\r\n </button>\r\n <div *ngIf=\"error\">\r\n <br />\r\n <font size=\"3\" color=\"red\">{{ error }}</font>\r\n </div>\r\n</form>\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthFacebookOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-facebook',\r\n templateUrl: './auth-facebook.component.html',\r\n styleUrls: ['./auth-facebook.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthFacebookComponent {\r\n private options?: AuthFacebookOptions;\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private appRef: ApplicationRef\r\n ) {\r\n this.options = this.config.getConfig('auth.facebook');\r\n\r\n if (this.options?.appId) {\r\n this.loadSDKFacebook();\r\n } else {\r\n console.warn('Facebook authentification needs \"appId\" option');\r\n }\r\n }\r\n\r\n private subscribeEvents() {\r\n (window as any).FB.Event.subscribe('auth.statusChange', (rep) => {\r\n this.statusChangeCallback(rep);\r\n });\r\n }\r\n\r\n private statusChangeCallback(response) {\r\n if (response.status === 'connected') {\r\n const accessToken = response.authResponse.accessToken;\r\n this.loginFacebook(accessToken);\r\n }\r\n }\r\n\r\n private loginFacebook(token) {\r\n this.authService.loginWithToken(token, 'facebook').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n }\r\n\r\n private loadSDKFacebook() {\r\n if (document.getElementById('facebook-jssdk')) {\r\n return;\r\n }\r\n\r\n const urlSDK =\r\n 'https://connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.9';\r\n\r\n const fjs = document.getElementsByTagName('script')[0];\r\n const js = document.createElement('script');\r\n js.id = 'facebook-jssdk';\r\n js.src = `${urlSDK}&appId=${this.options?.appId}`;\r\n js.onload = () => {\r\n this.subscribeEvents();\r\n };\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }\r\n}\r\n","<div\r\n scope=\"public_profile,email\"\r\n class=\"fb-login-button\"\r\n data-max-rows=\"1\"\r\n data-size=\"large\"\r\n data-button-type=\"login_with\"\r\n data-show-faces=\"false\"\r\n data-auto-logout-link=\"false\"\r\n data-use-continue-as=\"false\"\r\n></div>\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport {\r\n MSAL_GUARD_CONFIG,\r\n MsalBroadcastService,\r\n MsalService\r\n} from '@azure/msal-angular';\r\nimport {\r\n AuthenticationResult,\r\n InteractionRequiredAuthError,\r\n InteractionStatus,\r\n PopupRequest,\r\n PublicClientApplication,\r\n SilentRequest\r\n} from '@azure/msal-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport {\r\n AuthMicrosoftOptions,\r\n MSPMsalGuardConfiguration\r\n} from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-microsoft',\r\n templateUrl: './auth-microsoft.component.html',\r\n styleUrls: ['./auth-microsoft.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthMicrosoftComponent {\r\n private options?: AuthMicrosoftOptions;\r\n private readonly _destroying$ = new Subject<void>();\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private broadcastService: MsalBroadcastService;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private appRef: ApplicationRef,\r\n private msalService: MsalService,\r\n @Inject(MSAL_GUARD_CONFIG)\r\n private msalGuardConfig: MSPMsalGuardConfiguration[]\r\n ) {\r\n this.options = this.config.getConfig('auth.microsoft');\r\n\r\n this.msalService.instance = new PublicClientApplication({\r\n auth: this.options,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n this.broadcastService = new MsalBroadcastService(\r\n this.msalService.instance,\r\n this.msalService\r\n );\r\n\r\n if (this.options?.clientId) {\r\n this.broadcastService.inProgress$\r\n .pipe(\r\n filter(\r\n (status: InteractionStatus) => status === InteractionStatus.None\r\n ),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe(() => {\r\n this.checkAccount();\r\n });\r\n } else {\r\n console.warn('Microsoft authentification needs \"clientId\" option');\r\n }\r\n }\r\n\r\n public loginMicrosoft() {\r\n this.msalService\r\n .loginPopup({ ...this.getConf().authRequest } as PopupRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.msalService.instance.setActiveAccount(response.account);\r\n this.checkAccount();\r\n });\r\n }\r\n\r\n private checkAccount() {\r\n this.msalService.instance\r\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\r\n .then((response: AuthenticationResult) => {\r\n const tokenAccess = response.accessToken;\r\n const tokenId = response.idToken;\r\n this.authService\r\n .loginWithToken(tokenAccess, 'microsoft', { tokenId })\r\n .subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n })\r\n .catch(async (error) => {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n // fallback to interaction when silent call fails\r\n return this.msalService.acquireTokenPopup(\r\n this.getConf().authRequest as SilentRequest\r\n );\r\n }\r\n console.log(error);\r\n })\r\n .catch((error) => {\r\n console.log('Silent token fails');\r\n });\r\n }\r\n\r\n private getConf(): MSPMsalGuardConfiguration {\r\n return this.msalGuardConfig.filter((conf) => conf.type === 'add')[0];\r\n }\r\n}\r\n","<button\r\n class=\"microsoft-login-button\"\r\n mat-raised-button\r\n (click)=\"loginMicrosoft()\"\r\n>\r\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\r\n {{ 'igo.auth.microsoft.login' | translate }}\r\n</button>\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { Location } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\n\r\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\r\nimport { IMsalService } from '@azure/msal-angular';\r\nimport {\r\n AuthenticationResult,\r\n EndSessionPopupRequest,\r\n EndSessionRequest,\r\n IPublicClientApplication,\r\n Logger,\r\n PopupRequest,\r\n RedirectRequest,\r\n SilentRequest,\r\n SsoSilentRequest,\r\n WrapperSKU\r\n} from '@azure/msal-browser';\r\nimport { Observable, from } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class MsalServiceb2c implements IMsalService {\r\n private redirectHash: string;\r\n private logger: Logger;\r\n private name = '@azure/msal-angular';\r\n private version = '2.0.0-beta.2';\r\n constructor(\r\n @Inject(MSAL_INSTANCE) public instance: IPublicClientApplication,\r\n private location: Location\r\n ) {\r\n const hash = this.location.path(true).split('#').pop();\r\n if (hash) {\r\n this.redirectHash = `#${hash}`;\r\n }\r\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, this.version);\r\n }\r\n\r\n initialize(): Observable<void> {\r\n return from(this.instance.initialize());\r\n }\r\n\r\n acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult> {\r\n return from(this.instance.acquireTokenPopup(request));\r\n }\r\n acquireTokenRedirect(request: RedirectRequest): Observable<void> {\r\n return from(this.instance.acquireTokenRedirect(request));\r\n }\r\n acquireTokenSilent(\r\n silentRequest: SilentRequest\r\n ): Observable<AuthenticationResult> {\r\n return from(this.instance.acquireTokenSilent(silentRequest));\r\n }\r\n handleRedirectObservable(hash?: string): Observable<AuthenticationResult> {\r\n return from(this.instance.handleRedirectPromise(hash || this.redirectHash));\r\n }\r\n loginPopup(request?: PopupRequest): Observable<AuthenticationResult> {\r\n return from(this.instance.loginPopup(request));\r\n }\r\n loginRedirect(request?: RedirectRequest): Observable<void> {\r\n return from(this.instance.loginRedirect(request));\r\n }\r\n logout(logoutRequest?: EndSessionRequest): Observable<void> {\r\n return from(this.instance.logout(logoutRequest));\r\n }\r\n logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void> {\r\n return from(this.instance.logoutRedirect(logoutRequest));\r\n }\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Observable<void> {\r\n return from(this.instance.logoutPopup(logoutRequest));\r\n }\r\n ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult> {\r\n return from(this.instance.ssoSilent(request));\r\n }\r\n /**\r\n * Gets logger for msal-angular.\r\n * If no logger set, returns logger instance created with same options as msal-browser\r\n */\r\n getLogger(): Logger {\r\n if (!this.logger) {\r\n this.logger = this.instance.getLogger().clone(this.name, this.version);\r\n }\r\n return this.logger;\r\n }\r\n // Create a logger instance for msal-angular with the same options as msal-browser\r\n setLogger(logger: Logger): void {\r\n this.logger = logger.clone(this.name, this.version);\r\n this.instance.setLogger(logger);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { Inject, Injectable } from '@angular/core';\r\n\r\nimport { MSAL_INSTANCE } from '@azure/msal-angular';\r\nimport {\r\n EventMessage,\r\n EventMessageUtils,\r\n IPublicClientApplication,\r\n InteractionStatus\r\n} from '@azure/msal-browser';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\n\r\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\r\n\r\n@Injectable()\r\nexport class MsalBroadcastServiceb2c {\r\n private _msalSubject: Subject<EventMessage>;\r\n public msalSubject$: Observable<EventMessage>;\r\n private _inProgress: BehaviorSubject<InteractionStatus>;\r\n public inProgress$: Observable<InteractionStatus>;\r\n\r\n constructor(\r\n @Inject(MSAL_INSTANCE) private msalInstance: IPublicClientApplication,\r\n private authService: MsalServiceb2c\r\n ) {\r\n this._msalSubject = new Subject<EventMessage>();\r\n this.msalSubject$ = this._msalSubject.asObservable();\r\n\r\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\r\n this._inProgress = new BehaviorSubject<InteractionStatus>(\r\n InteractionStatus.Startup\r\n );\r\n this.inProgress$ = this._inProgress.asObservable();\r\n\r\n this.msalInstance.addEventCallback((message: EventMessage) => {\r\n this._msalSubject.next(message);\r\n const status = EventMessageUtils.getInteractionStatusFromEvent(message);\r\n if (status !== null) {\r\n this.authService\r\n .getLogger()\r\n .verbose(\r\n `BroadcastService - ${message.eventType} results in setting inProgress to ${status}`\r\n );\r\n this._inProgress.next(status);\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { MSAL_GUARD_CONFIG } from '@azure/msal-angular';\r\nimport {\r\n AuthenticationResult,\r\n InteractionRequiredAuthError,\r\n InteractionStatus,\r\n PopupRequest,\r\n PublicClientApplication,\r\n SilentRequest\r\n} from '@azure/msal-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { MsalBroadcastServiceb2c } from '../shared/auth-msalBroadcastServiceb2c.service';\r\nimport { MsalServiceb2c } from '../shared/auth-msalServiceb2c.service.';\r\nimport {\r\n AuthMicrosoftb2cOptions,\r\n MSPMsalGuardConfiguration\r\n} from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-microsoftb2c',\r\n templateUrl: './auth-microsoftb2c.component.html',\r\n styleUrls: ['./auth-microsoftb2c.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AuthMicrosoftb2cComponent {\r\n private options: AuthMicrosoftb2cOptions;\r\n private readonly _destroying$ = new Subject<void>();\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private broadcastService: MsalBroadcastServiceb2c;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private appRef: ApplicationRef,\r\n private msalService: MsalServiceb2c,\r\n @Inject(MSAL_GUARD_CONFIG)\r\n private msalGuardConfig: MSPMsalGuardConfiguration[]\r\n ) {\r\n this.options = this.config.getConfig('auth.microsoftb2c') || {};\r\n\r\n this.msalService.instance = new PublicClientApplication({\r\n auth: this.options.browserAuthOptions,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n this.broadcastService = new MsalBroadcastServiceb2c(\r\n this.msalService.instance,\r\n this.msalService\r\n );\r\n\r\n if (this.options.browserAuthOptions.clientId) {\r\n this.broadcastService.inProgress$\r\n .pipe(\r\n filter(\r\n (status: InteractionStatus) => status === InteractionStatus.None\r\n ),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe(() => {\r\n this.checkAccount();\r\n });\r\n } else {\r\n console.warn('Microsoft authentification needs \"clientId\" option');\r\n }\r\n }\r\n\r\n public loginMicrosoftb2c() {\r\n this.msalService\r\n .loginPopup({ ...this.getConf().authRequest } as PopupRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.msalService.instance.setActiveAccount(response.account);\r\n this.checkAccount();\r\n });\r\n }\r\n\r\n private checkAccount() {\r\n this.msalService.instance\r\n .acquireTokenSilent(this.getConf().authRequest as SilentRequest)\r\n .then((response: AuthenticationResult) => {\r\n const token = response.idToken;\r\n this.authService.loginWithToken(token, 'microsoftb2c').subscribe(() => {\r\n this.appRef.tick();\r\n this.login.emit(true);\r\n });\r\n })\r\n .catch(async (error) => {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n // fallback to interaction when silent call fails\r\n return this.msalService.acquireTokenPopup(\r\n this.getConf().authRequest as SilentRequest\r\n );\r\n }\r\n })\r\n .catch((error) => {\r\n console.log('Silent token fails');\r\n });\r\n }\r\n\r\n private getConf(): MSPMsalGuardConfiguration {\r\n return this.msalGuardConfig.filter((conf) => conf.type === 'b2c')[0];\r\n }\r\n}\r\n","<button\r\n class=\"microsoft-login-button\"\r\n mat-raised-button\r\n (click)=\"loginMicrosoftb2c()\"\r\n>\r\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\r\n {{ 'igo.auth.microsoftb2c.login' | translate }}\r\n</button>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output\r\n} from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { AuthOptions } from '../shared/auth.interface';\r\nimport { AuthService } from '../shared/auth.service';\r\n\r\n@Component({\r\n selector: 'igo-auth-form',\r\n templateUrl: './auth-form.component.html',\r\n styleUrls: ['./auth-form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class AuthFormComponent implements OnInit {\r\n @Input()\r\n get backgroundDisable(): boolean {\r\n if (this.isLogoutRoute || this.isLogoutRoute) {\r\n return false;\r\n }\r\n return this._backgroundDisable;\r\n }\r\n set backgroundDisable(value: boolean) {\r\n this._backgroundDisable = value.toString() === 'true';\r\n }\r\n private _backgroundDisable = true;\r\n\r\n @Input()\r\n get hasAlreadyConnectedDiv(): boolean {\r\n return this._hasAlreadyConnectedDiv;\r\n }\r\n set hasAlreadyConnectedDiv(value: boolean) {\r\n this._hasAlreadyConnectedDiv = value.toString() === 'true';\r\n }\r\n private _hasAlreadyConnectedDiv = true;\r\n\r\n @Input()\r\n get hasLogoutDiv(): boolean {\r\n return this._hasLogoutDiv;\r\n }\r\n set hasLogoutDiv(value: boolean) {\r\n this._hasLogoutDiv = value.toString() === 'true';\r\n }\r\n private _hasLogoutDiv = true;\r\n\r\n @Input()\r\n get showAlreadyConnectedDiv(): boolean {\r\n if (this.isLogoutRoute) {\r\n return this.hasAlreadyConnectedDiv;\r\n }\r\n return this._showAlreadyConnectedDiv;\r\n }\r\n set showAlreadyConnectedDiv(value: boolean) {\r\n this._showAlreadyConnectedDiv = value.toString() === 'true';\r\n }\r\n private _showAlreadyConnectedDiv = false;\r\n\r\n @Input()\r\n get showLogoutDiv(): boolean {\r\n if (this.isLogoutRoute) {\r\n return this.hasLogoutDiv;\r\n }\r\n return this._showLogoutDiv;\r\n }\r\n set showLogoutDiv(value: boolean) {\r\n this._showLogoutDiv = value.toString() === 'true';\r\n }\r\n private _showLogoutDiv = false;\r\n\r\n get showLoginDiv(): boolean {\r\n if (!this.isLogoutRoute) {\r\n return true;\r\n }\r\n }\r\n\r\n @Output() login: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public options?: AuthOptions;\r\n public user;\r\n\r\n public visible = true;\r\n\r\n private isLoginRoute: boolean;\r\n private isLogoutRoute: boolean;\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private config: ConfigService,\r\n @Optional() private router: Router\r\n ) {\r\n this.options = this.config.getConfig('auth');\r\n this.visible = Object.getOwnPropertyNames(this.options).length !== 0;\r\n }\r\n\r\n public ngOnInit() {\r\n this.analyzeRoute();\r\n this.getName();\r\n }\r\n\r\n public onLogin() {\r\n this.auth.goToRedirectUrl();\r\n this.getName();\r\n this.login.emit(true);\r\n }\r\n\r\n public logout() {\r\n this.auth.logout().subscribe(() => {\r\n this.user = undefined;\r\n if (this.router) {\r\n if (this.options?.logoutRoute) {\r\n this.router.navigate([this.options?.logoutRoute]);\r\n } else if (this.options?.homeRoute) {\r\n this.router.navigate([this.options?.homeRoute]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public home() {\r\n if (this.router && this.options?.homeRoute) {\r\n this.router.navigate([this.options?.homeRoute]);\r\n }\r\n }\r\n\r\n private getName() {\r\n const tokenDecoded = this.auth.decodeToken();\r\n if (tokenDecoded) {\r\n this.user = {\r\n name: tokenDecoded.user.firstName || tokenDecoded.user.sourceId\r\n };\r\n }\r\n }\r\n\r\n private analyzeRoute() {\r\n if (!this.router) {\r\n return;\r\n }\r\n\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationStart))\r\n .subscribe((changeEvent: any) => {\r\n if (changeEvent.url) {\r\n const currentRoute = changeEvent.url;\r\n const logoutRoute = this.options?.logoutRoute;\r\n const loginRoute = this.options?.loginRoute;\r\n\r\n this.isLogoutRoute = currentRoute === logoutRoute;\r\n this.isLoginRoute = currentRoute === loginRoute;\r\n\r\n if (this.isLogoutRoute) {\r\n this.auth.logout();\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","<div *ngIf=\"visible\">\r\n <div\r\n *ngIf=\"!auth.logged && backgroundDisable\"\r\n class=\"backgroundDisable\"\r\n ></div>\r\n\r\n <div *ngIf=\"!auth.logged && showLoginDiv\" class=\"login center-block\">\r\n <h1>{{ 'igo.auth.connection' | translate }}</h1>\r\n\r\n <igo-auth-google\r\n *ngIf=\"options.google && options.google.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-google>\r\n <igo-auth-microsoft\r\n *ngIf=\"options.microsoft && options.microsoft.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoft>\r\n <igo-auth-microsoftb2c\r\n *ngIf=\"options.microsoftb2c && options.microsoftb2c.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-microsoftb2c>\r\n <igo-auth-facebook\r\n *ngIf=\"options.facebook && options.facebook.enabled !== false\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-facebook>\r\n <igo-auth-intern\r\n *ngIf=\"!options.intern || options.intern.enabled !== false\"\r\n [allowAnonymous]=\"options.allowAnonymous\"\r\n (login)=\"onLogin()\"\r\n >\r\n </igo-auth-intern>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"auth.logged && showAlreadyConnectedDiv\"\r\n class=\"login center-block\"\r\n >\r\n <p>{{ 'igo.auth.welcome' | translate: user }}</p>\r\n <button mat-raised-button type=\"button\" (click)=\"logout()\">\r\n {{ 'igo.auth.signOut' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showLogoutDiv\" class=\"login center-block\">\r\n <p>{{ 'igo.auth.deconnection' | translate }}</p>\r\n <button\r\n *ngIf=\"options.homeRoute\"\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"home()\"\r\n >\r\n {{ 'igo.auth.home' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoggedGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.logged) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.authenticated) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdminGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.isAdmin) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { AuthOptions } from './auth.interface';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfilsGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private config: ConfigService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n return this.authService.getProfils().pipe(\r\n map((profils: { profils: string[] }) => {\r\n const authConfig = this.config.getConfig('auth') as AuthOptions;\r\n if (\r\n profils &&\r\n profils.profils &&\r\n profils.profils.some((v) => authConfig.profilsGuard.indexOf(v) !== -1)\r\n ) {\r\n return true;\r\n }\r\n\r\n this.authService.redirectUrl = state.url;\r\n\r\n if (authConfig?.loginRoute) {\r\n this.router.navigateByUrl(authConfig.loginRoute);\r\n }\r\n\r\n return false;\r\n })\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { Md5 } from 'ts-md5';\r\n\r\nimport {\r\n AuthByKeyOptions,\r\n AuthOptions,\r\n WithCredentialsOptions\r\n} from './auth.interface';\r\nimport { TokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n private authOptions: AuthOptions;\r\n private refreshInProgress = false;\r\n private trustHosts: string[];\r\n private hostsWithCredentials: WithCredentialsOptions[];\r\n private hostsWithAuthByKey: AuthByKeyOptions[];\r\n\r\n constructor(\r\n private config: ConfigService,\r\n private tokenService: TokenService,\r\n private http: HttpClient\r\n ) {\r\n this.authOptions = this.config.getConfig('auth') as AuthOptions;\r\n\r\n this.trustHosts = this.authOptions?.trustHosts || [];\r\n this.trustHosts.push(window.location.hostname);\r\n\r\n this.hostsWithCredentials = this.authOptions?.hostsWithCredentials || [];\r\n this.hostsWithAuthByKey = this.authOptions?.hostsByKey || [];\r\n }\r\n\r\n intercept(\r\n originalReq: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n const withCredentials = this.handleHostsWithCredentials(originalReq.url);\r\n let req = originalReq.clone();\r\n const hostWithKey = this.handleHostsAuthByKey(originalReq.url);\r\n if (hostWithKey) {\r\n req = req.clone({\r\n params: req.params.set(hostWithKey.key, hostWithKey.value)\r\n });\r\n }\r\n if (withCredentials) {\r\n req = originalReq.clone({\r\n withCredentials\r\n });\r\n return next.handle(req);\r\n }\r\n this.refreshToken();\r\n const token = this.tokenService.get();\r\n const element = document.createElement('a');\r\n element.href = req.url;\r\n if (element.host === '') {\r\n element.href = element.href; // FIX IE11, DO NOT REMOVE\r\n }\r\n\r\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\r\n return next.handle(req);\r\n }\r\n\r\n const authHeader = `Bearer ${token}`;\r\n let authReq = req.clone({\r\n headers: req.headers.set('Authorization', authHeader)\r\n });\r\n\r\n const tokenDecoded = this.tokenService.decode();\r\n if (authReq.params.get('_i') === 'true' && tokenDecoded?.user?.sourceId) {\r\n const hashUser = Md5.hashStr(tokenDecoded.user.sourceId) as string;\r\n authReq = authReq.clone({\r\n params: authReq.params.set('_i', hashUser)\r\n });\r\n } else if (authReq.params.get('_i') === 'true') {\r\n authReq = authReq.clone({\r\n params: authReq.params.delete('_i')\r\n });\r\n }\r\n\r\n return next.handle(authReq);\r\n }\r\n\r\n interceptXhr(xhr, url: string): boolean {\r\n const withCredentials = this.handleHostsWithCredentials(url);\r\n if (withCredentials) {\r\n xhr.withCredentials = withCredentials;\r\n return true;\r\n }\r\n\r\n this.refreshToken();\r\n const element = document.createElement('a');\r\n element.href = url;\r\n\r\n const token = this.tokenService.get();\r\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\r\n return false;\r\n }\r\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\r\n return true;\r\n }\r\n\r\n alterUrlWithKeyAuth(url: string): string {\r\n const hostWithKey = this.handleHostsAuthByKey(url);\r\n let interceptedUrl = url;\r\n if (hostWithKey) {\r\n const urlDecomposed = interceptedUrl.split(/[?&]/);\r\n let urlWithKeyAdded = urlDecomposed.shift();\r\n const paramsToKeep = urlDecomposed.filter((p) => p.length !== 0);\r\n paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);\r\n if (paramsToKeep.length) {\r\n urlWithKeyAdded += '?' + paramsToKeep.join('&');\r\n }\r\n return urlWithKeyAdded;\r\n }\r\n return;\r\n }\r\n\r\n private handleHostsWithCredentials(reqUrl: string) {\r\n let withCredentials = false;\r\n for (const hostWithCredentials of this.hostsWithCredentials) {\r\n const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);\r\n if (domainRegex.test(reqUrl)) {\r\n withCredentials =\r\n hostWithCredentials.withCredentials !== undefined\r\n ? hostWithCredentials.withCredentials\r\n : undefined;\r\n break;\r\n }\r\n }\r\n return withCredentials;\r\n }\r\n\r\n private handleHostsAuthByKey(reqUrl: string): { key: string; value: string } {\r\n let hostWithKey;\r\n for (const hostWithAuthByKey of this.hostsWithAuthByKey) {\r\n const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);\r\n if (domainRegex.test(reqUrl)) {\r\n var replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;\r\n var keyAdded = new RegExp(replace, 'gm');\r\n if (!keyAdded.test(reqUrl)) {\r\n hostWithKey = {\r\n key: hostWithAuthByKey.keyProperty,\r\n value: hostWithAuthByKey.keyValue\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n return hostWithKey;\r\n }\r\n\r\n refreshToken() {\r\n const jwt = this.tokenService.decode();\r\n const currentTime = new Date().getTime() / 1000;\r\n\r\n if (\r\n !this.refreshInProgress &&\r\n jwt &&\r\n currentTime < jwt.exp &&\r\n currentTime > jwt.exp - 1800\r\n ) {\r\n this.refreshInProgress = true;\r\n\r\n const url = this.authOptions?.url;\r\n return this.http.post(`${url}/refresh`, {}).subscribe(\r\n (data: any) => {\r\n this.tokenService.set(data.token);\r\n this.refreshInProgress = false;\r\n },\r\n (err) => {\r\n err.error.caught = true;\r\n return err;\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","import { ConfigService } from '@igo2/core';\r\n\r\nimport {\r\n MSAL_GUARD_CONFIG,\r\n MSAL_INSTANCE,\r\n MsalService\r\n} from '@azure/msal-angular';\r\nimport { InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\nimport { BrowserAuthOptions } from '@azure/msal-browser';\r\n\r\nimport { MsalServiceb2c } from './auth-msalServiceb2c.service.';\r\nimport {\r\n AuthMicrosoftOptions,\r\n MSPMsalGuardConfiguration\r\n} from './auth.interface';\r\n\r\nexport function MSALConfigFactory(\r\n config: ConfigService\r\n): PublicClientApplication {\r\n const msConf = config.getConfig('auth.microsoft') as AuthMicrosoftOptions;\r\n\r\n msConf.redirectUri = msConf?.redirectUri || window.location.href;\r\n msConf.authority =\r\n msConf?.authority || 'https://login.microsoftonline.com/organizations';\r\n\r\n const myMsalObj = new PublicClientApplication({\r\n auth: msConf,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n return myMsalObj;\r\n}\r\n\r\nexport function MSALConfigFactoryb2c(\r\n config: ConfigService\r\n): PublicClientApplication {\r\n const msConf = config.getConfig(\r\n 'auth.microsoftb2c.browserAuthOptions'\r\n ) as BrowserAuthOptions;\r\n msConf.redirectUri = msConf?.redirectUri || window.location.href;\r\n msConf.authority =\r\n msConf?.authority || 'https://login.microsoftonline.com/organizations';\r\n\r\n const myMsalObj = new PublicClientApplication({\r\n auth: msConf,\r\n cache: {\r\n cacheLocation: 'sessionStorage'\r\n }\r\n });\r\n\r\n return myMsalObj;\r\n}\r\n\r\nexport function MSALAngularConfigFactory(\r\n config: ConfigService\r\n): MSPMsalGuardConfiguration {\r\n const msConf = config.getConfig('auth.microsoft') as AuthMicrosoftOptions;\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: ['user.read'],\r\n loginHint: 'todo'\r\n },\r\n type: 'add'\r\n };\r\n}\r\n\r\nexport function MSALAngularConfigFactoryb2c(\r\n config: ConfigService\r\n): MSPMsalGuardConfiguration {\r\n const msConf = config.getConfig(\r\n 'auth.microsoftb2c.browserAuthOptions'\r\n ) as BrowserAuthOptions;\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: [msConf?.clientId]\r\n },\r\n type: 'b2c'\r\n };\r\n}\r\n\r\nexport function provideAuthMicrosoft(type?: string) {\r\n if (type === 'b2c') {\r\n return [\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALConfigFactoryb2c,\r\n deps: [ConfigService]\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALAngularConfigFactoryb2c,\r\n deps: [ConfigService],\r\n multi: true\r\n },\r\n MsalServiceb2c\r\n ];\r\n } else {\r\n return [\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALConfigFactory,\r\n deps: [ConfigService]\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALAngularConfigFactory,\r\n deps: [ConfigService],\r\n multi: true\r\n },\r\n MsalService\r\n ];\r\n }\r\n}\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n@Directive({\r\n selector: '[igoProtected]'\r\n})\r\nexport class ProtectedDirective {\r\n constructor(authentication: AuthService, el: ElementRef) {\r\n if (!authentication.isAuthenticated()) {\r\n el.nativeElement.parentNode.removeChild(el.nativeElement);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { BaseStorage, ConfigService, StorageScope } from '@igo2/core';\r\n\r\nimport { AuthService } from './auth.service';\r\nimport { AuthStorageOptions } from './auth-storage.interface';\r\nimport { TokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthStorageService extends BaseStorage<AuthStorageOptions> {\r\n constructor(\r\n config: ConfigService,\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private tokenService: TokenService\r\n ) {\r\n super(config);\r\n\r\n this.authService.authenticate$.subscribe((isAuthenticated) => {\r\n if (isAuthenticated && this.options.url) {\r\n this.http\r\n .get(this.options.url)\r\n .subscribe((userIgo: { preference: object }) => {\r\n if (userIgo && userIgo.preference) {\r\n for (const key of Object.keys(userIgo.preference)) {\r\n const value = userIgo.preference[key];\r\n super.set(key, value);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n set(\r\n key: string,\r\n value: string | object | boolean | number,\r\n scope: StorageScope = StorageScope.LOCAL\r\n ) {\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n const preference = {};\r\n preference[key] = value;\r\n this.http.patch(this.options.url, { preference }).subscribe();\r\n }\r\n super.set(key, value, scope);\r\n }\r\n\r\n remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n const preference = {};\r\n preference[key] = undefined;\r\n this.http.patch(this.options.url, { preference }).subscribe();\r\n }\r\n super.remove(key, scope);\r\n }\r\n\r\n clear(scope: StorageScope = StorageScope.LOCAL) {\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n this.http\r\n .patch(\r\n this.options.url,\r\n { preference: {} },\r\n {\r\n params: {\r\n mergePreference: 'false'\r\n }\r\n }\r\n )\r\n .subscribe();\r\n }\r\n\r\n let token: string;\r\n if (scope === StorageScope.LOCAL) {\r\n token = this.tokenService.get();\r\n }\r\n\r\n super.clear(scope);\r\n\r\n if (token) {\r\n this.tokenService.set(token);\r\n }\r\n\r\n if (\r\n scope === StorageScope.LOCAL &&\r\n this.authService.authenticated &&\r\n this.options.url\r\n ) {\r\n this.http\r\n .get(this.options.url)\r\n .subscribe((userIgo: { preference: object }) => {\r\n if (userIgo && userIgo.preference) {\r\n for (const key of Object.keys(userIgo.preference)) {\r\n const value = userIgo.preference[key];\r\n super.set(key, value);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import { Inject, Injectable, Injector, Optional } from '@angular/core';\r\n\r\nimport {\r\n AnyMonitoringOptions,\r\n ConfigService,\r\n MONITORING_OPTIONS,\r\n identifySentryUser\r\n} from '@igo2/core';\r\n\r\nimport { first, switchMap } from 'rxjs';\r\n\r\nimport { AuthService, User } from '../shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthMonitoringService {\r\n // The AuthService need to be lazy provided because this service is provided in the APP_INITIALIZER\r\n authService?: AuthService;\r\n\r\n constructor(\r\n private configService: ConfigService,\r\n @Optional()\r\n @Inject(MONITORING_OPTIONS)\r\n private monitoringOptions: AnyMonitoringOptions | null,\r\n private injector: Injector\r\n ) {\r\n if (!this.monitoringOptions?.identifyUser) {\r\n return;\r\n }\r\n\r\n this.configService.isLoaded$\r\n .pipe(\r\n first((isLoaded) => isLoaded),\r\n switchMap(() => {\r\n this.authService = this.injector.get(AuthService);\r\n return this.authService?.authenticate$;\r\n })\r\n )\r\n .subscribe((isAuthenticated) => {\r\n const user = isAuthenticated ? this.authService.user : null;\r\n this._identifyUser(user);\r\n });\r\n }\r\n\r\n private _identifyUser(user: User | null): void {\r\n switch (this.monitoringOptions.provider) {\r\n case 'sentry':\r\n identifySentryUser(user);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\n\r\nimport {\r\n AnyMonitoringOptions,\r\n ConfigService,\r\n MONITORING_OPTIONS\r\n} from '@igo2/core';\r\n\r\nimport { AuthMonitoringService } from './auth-monitoring.service';\r\n\r\nexport function provideAuthUserMonitoring(\r\n options: AnyMonitoringOptions | null\r\n): Provider[] {\r\n if (!options) {\r\n return [];\r\n }\r\n\r\n return [\r\n {\r\n provide: AuthMonitoringService,\r\n useClass: AuthMonitoringService,\r\n deps: [ConfigService, MONITORING_OPTIONS, Injector]\r\n },\r\n // Force instantiate Tracing service to avoid require it in any constructor.\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: () => () => {},\r\n deps: [AuthMonitoringService],\r\n multi: true\r\n }\r\n ];\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { AuthFormComponent } from './auth-form/auth-form.component';\r\n\r\nconst routes: Routes = [\r\n { path: 'login', component: AuthFormComponent },\r\n { path: 'logout', component: AuthFormComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\nexport class AuthRoutingModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { IgoLanguageModule, StorageService } from '@igo2/core';\r\n\r\nimport { MsalModule } from '@azure/msal-angular';\r\n\r\nimport { AuthFacebookComponent } from './auth-form/auth-facebook.component';\r\nimport { AuthFormComponent } from './auth-form/auth-form.component';\r\nimport { AuthGoogleComponent } from './auth-form/auth-google.component';\r\nimport { AuthInternComponent } from './auth-form/auth-intern.component';\r\nimport { AuthMicrosoftComponent } from './auth-form/auth-microsoft.component';\r\nimport { AuthMicrosoftb2cComponent } from './auth-form/auth-microsoftb2c.component';\r\nimport { provideAuthMicrosoft } from './shared/auth-microsoft.provider';\r\nimport { AuthStorageService } from './shared/auth-storage.service';\r\nimport { AuthInterceptor } from './shared/auth.interceptor';\r\nimport { ProtectedDirective } from './shared/protected.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n IgoLanguageModule,\r\n MsalModule\r\n ],\r\n declarations: [\r\n AuthFormComponent,\r\n AuthGoogleComponent,\r\n AuthInternComponent,\r\n AuthFacebookComponent,\r\n AuthMicrosoftComponent,\r\n AuthMicrosoftb2cComponent,\r\n ProtectedDirective\r\n ],\r\n exports: [AuthFormComponent, ProtectedDirective]\r\n})\r\nexport class IgoAuthModule {\r\n static forRoot(): ModuleWithProviders<IgoAuthModule> {\r\n return {\r\n ngModule: IgoAuthModule,\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: StorageService,\r\n useClass: AuthStorageService\r\n },\r\n ...provideAuthMicrosoft('add'),\r\n ...provideAuthMicrosoft('b2c')\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of auth\r\n */\r\n\r\nexport { AuthFormComponent } from './lib/auth-form';\r\nexport * from './lib/environment';\r\nexport * from './lib/shared/auth.service';\r\nexport * from './lib/shared/logged.guard';\r\nexport * from './lib/shared/auth.guard';\r\nexport * from './lib/shared/admin.guard';\r\nexport * from './lib/shared/profils.guard';\r\nexport * from './lib/shared/auth.interceptor';\r\nexport * from './lib/shared/auth.interface';\r\nexport * from './lib/shared/auth-microsoft.provider';\r\nexport * from './lib/shared/protected.directive';\r\nexport * from './lib/shared/token.interface';\r\nexport * from './lib/shared/token.service';\r\nexport * from './lib/shared/auth-storage.interface';\r\nexport * from './lib/shared/auth-storage.service';\r\nexport * from './lib/auth-monitoring/auth-monitoring.provider';\r\nexport * from './lib/auth-monitoring/auth-monitoring.service';\r\nexport * from './lib/auth-routing.module';\r\nexport * from './lib/auth.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.TokenService","i3","i4","i1.AuthService","i7","i8","i5","i6","i1","i1.MsalServiceb2c","i6.AuthGoogleComponent","i7.AuthInternComponent","i8.AuthFacebookComponent","i9.AuthMicrosoftComponent","i10.AuthMicrosoftb2cComponent","i11","i2","i3.AuthService","i4.TokenService"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Provider } from '@angular/core';
2
+ import { AnyMonitoringOptions } from '@igo2/core';
3
+ export declare function provideAuthUserMonitoring(options: AnyMonitoringOptions | null): Provider[];
@@ -0,0 +1,14 @@
1
+ import { Injector } from '@angular/core';
2
+ import { AnyMonitoringOptions, ConfigService } from '@igo2/core';
3
+ import { AuthService } from '../shared';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AuthMonitoringService {
6
+ private configService;
7
+ private monitoringOptions;
8
+ private injector;
9
+ authService?: AuthService;
10
+ constructor(configService: ConfigService, monitoringOptions: AnyMonitoringOptions | null, injector: Injector);
11
+ private _identifyUser;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthMonitoringService, [null, { optional: true; }, null]>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<AuthMonitoringService>;
14
+ }