ssi-security-commons 0.19.0 → 0.19.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ssi-security-commons.mjs","sources":["../../../projects/ssi-security-commons/src/lib/ssi-security-commons.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.component.ts","../../../projects/ssi-security-commons/src/lib/services/crypto.service.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.html","../../../projects/ssi-security-commons/src/lib/shared/constants.ts","../../../projects/ssi-security-commons/src/lib/services/jwt.service.ts","../../../projects/ssi-security-commons/src/lib/services/session.service.ts","../../../projects/ssi-security-commons/src/lib/services/messages.service.ts","../../../projects/ssi-security-commons/src/lib/services/user-event.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.module.ts","../../../projects/ssi-security-commons/src/lib/services/auth-interceptor.service.ts","../../../projects/ssi-security-commons/src/lib/services/web-authn.service.ts","../../../projects/ssi-security-commons/src/public-api.ts","../../../projects/ssi-security-commons/src/ssi-security-commons.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SsiSecurityCommonsService {\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: ` <p>ssi-security-commons works!</p>\n `,\n styles: [],\n standalone: false\n})\nexport class SsiSecurityCommonsComponent {\n\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CryptoService {\n\n private configuration: any;\n private key: any;\n private secret = '&E)H@McQfThWmZq4';\n\n constructor() {\n this.configuration = {\n mode: CryptoJS.mode.ECB\n };\n const hash = CryptoJS.SHA1(this.secret);\n this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n }\n\n encrypt(text: string): string {\n if (!text) {return '';}\n return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();\n }\n\n decrypt(text: string): string {\n if (!text) {return '';}\n return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n encryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.encrypt(text, key, this.configuration).toString();\n }\n\n decryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface DialogData {\n title?: string;\n icon?: string;\n type?: string;\n message?: string;\n okText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'lib-app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n standalone: false\n})\nexport class AlertComponent {\n\n constructor(\n public dialogRef: MatDialogRef<AlertComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(null);\n }\n}\n","<div class=\"sec-alert-icon\" *ngIf=\"data.icon==='warn'\">\n <svg width=\"48\" height=\"49\" viewBox=\"0 0 48 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M24 13.5C24.69 13.5 25.25 14.06 25.25 14.75V27.25C25.25 27.5815 25.1183 27.8995 24.8839 28.1339C24.6495 28.3683 24.3315 28.5 24 28.5C23.6685 28.5 23.3505 28.3683 23.1161 28.1339C22.8817 27.8995 22.75 27.5815 22.75 27.25V14.75C22.75 14.06 23.31 13.5 24 13.5ZM24 34.5C24.5304 34.5 25.0391 34.2893 25.4142 33.9142C25.7893 33.5391 26 33.0304 26 32.5C26 31.9696 25.7893 31.4609 25.4142 31.0858C25.0391 30.7107 24.5304 30.5 24 30.5C23.4696 30.5 22.9609 30.7107 22.5858 31.0858C22.2107 31.4609 22 31.9696 22 32.5C22 33.0304 22.2107 33.5391 22.5858 33.9142C22.9609 34.2893 23.4696 34.5 24 34.5ZM4 24.5C4 13.454 12.954 4.5 24 4.5C35.046 4.5 44 13.454 44 24.5C44 35.546 35.046 44.5 24 44.5C12.954 44.5 4 35.546 4 24.5ZM24 7C14.335 7 6.5 14.835 6.5 24.5C6.5 34.165 14.335 42 24 42C33.665 42 41.5 34.165 41.5 24.5C41.5 14.835 33.665 7 24 7Z\" fill=\"#FF4021\"/>\n </svg>\n</div>\n<h1 mat-dialog-title class=\"sec-alert-title\">{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width sec-alert-content\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div class=\"sec-alert-actions\"> \n <button mat-flat-button color=\"primary\" class=\"sec-alert-ok\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n <button mat-flat-button class=\"sec-alert-cancel\" (click)=\"onCancel()\" *ngIf=\"data.cancelText\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n</div>\n","export const TOKEN = 'TOKEN';\nexport const REFRESH_TOKEN = 'REFRESH_TOKEN';\nexport const USERDATA = 'USERDATA';\nexport const LANG = 'LANG';\n","/* eslint-disable */\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class JwtService {\n\n public decodeToken(token: string) {\n const _decodeToken = (token: string) => {\n try {\n return JSON.parse(atob(token));\n } catch {\n return;\n }\n };\n return token\n .split('.')\n .map(token => _decodeToken(token))\n .reduce((acc, curr) => {\n if (!!curr) acc = { ...acc, ...curr };\n return acc;\n }, Object.create(null));\n }\n\n}\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable arrow-body-style */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { FrontEndException, UserData } from '../user.model';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { JwtService } from './jwt.service';\nimport { CryptoService } from './crypto.service';\nimport { REFRESH_TOKEN, TOKEN, USERDATA } from '../shared/constants';\n\n\n@Injectable()\nexport class SessionService {\n\n userdata: UserData | undefined;\n token: string | undefined;\n refreshToken: string | undefined;\n endPoint: string;\n loginUrl = 'http://localhost:4200/login';\n applicationId: any;\n environment: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any,\n private cryptoService: CryptoService,\n private jwtService: JwtService) {\n this.endPoint = environment.endPointCore;\n this.applicationId = environment.applicationId;\n this.environment = environment;\n }\n\n public buildUserdataFromToken(token: string): any {\n const tokenData = this.jwtService.decodeToken(token);\n const userData: UserData = {\n givenName: tokenData.given_name,\n familyName: tokenData.family_name,\n name: tokenData.name,\n roles: tokenData.realm_access.roles,\n userId: tokenData.sub,\n username: tokenData.preferred_username,\n email: tokenData.email,\n emailVerified: tokenData.email_verified,\n countryCode: tokenData.country_code\n };\n return userData;\n }\n\n public async reviewSessionData(): Promise<any> {\n const value = await this.checkSessionData() as any;\n console.log(`async result: ${value}`);\n return value;\n }\n\n public setUserdata(userdata: any): void {\n this.userdata = userdata;\n }\n\n public setTokens(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n }\n\n public getUserdata(): UserData | undefined {\n return this.userdata;\n }\n\n public setRefreshToken(refreshToken: any): void {\n this.refreshToken = refreshToken;\n this.saveStorageData(REFRESH_TOKEN, refreshToken);\n }\n\n public getRefreshToken(): string | undefined {\n return this.refreshToken;\n }\n\n public setToken(token: any): any {\n this.token = token;\n this.saveStorageData(TOKEN, token);\n }\n\n public getToken(): any {\n return this.token;\n }\n\n public destroyCredentials(): void {\n this.token = undefined;\n this.refreshToken = undefined;\n this.deleteStorageData(TOKEN);\n this.deleteStorageData(REFRESH_TOKEN);\n }\n\n public destroyUserData(): void {\n this.userdata = undefined;\n this.deleteStorageData(USERDATA);\n }\n\n public saveCredentials(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n this.saveStorageData(TOKEN, token);\n this.saveStorageData(REFRESH_TOKEN, refreshToken);\n this.saveUserData(this.buildUserdataFromToken(token));\n }\n\n public saveUserData(userData: any): void {\n this.userdata = userData;\n this.saveStorageData(USERDATA, JSON.stringify(userData));\n }\n\n public isLoggedIn(): boolean {\n return !!this.userdata;\n }\n\n logout(): Promise<any> {\n let clientId = this.environment.authClient;\n if (this.refreshToken) {\n const decoded = this.jwtService.decodeToken(this.refreshToken);\n clientId = decoded.azp;\n }\n return new Promise((resolve, reject) => {\n this.logoutApiClient(clientId).subscribe(res => {\n console.log(res);\n this.destroyCredentials();\n this.destroyUserData();\n this.goToLogin();\n resolve(null);\n }, (err) => {\n this.destroyCredentials();\n this.destroyUserData();\n console.error(err);\n reject(err);\n });\n });\n }\n\n getNewToken(refreshToken: string): any {\n console.log('getNewToken');\n const body = 'grant_type=refresh_token' + '&refresh_token=' + refreshToken + '&client_id=' + this.environment.authClient;\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/token`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n getNewTokenClient(refreshToken: string, clientId: string): any {\n console.log('getNewToken');\n const body = 'grant_type=refresh_token' + '&refresh_token=' + refreshToken + '&client_id=' + clientId;\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/token`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n getTokenClientCode(refreshToken: string, clientId: string): Observable<any> {\n console.log('getNewToken');\n const body = 'grant_type=refresh_token' + '&refresh_token=' + refreshToken + '&client_id=' + clientId;\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/token`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n\n getLoginUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/login/url/'+this.environment.authClient)\n .pipe(\n map(res => res));\n }\n\n getHomeUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/home/url/'+this.environment.authClient)\n .pipe(\n map(res => res));\n }\n\n logoutApi(): Observable<any> {\n const body = 'refresh_token=' + this.refreshToken + '&client_id=' + this.environment.authClient;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/logout`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n logoutApiClient(clientId: string): Observable<any> {\n const body = 'refresh_token=' + this.refreshToken + '&client_id=' + clientId;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/logout`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n goToLogin(): void {\n this.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n window.location.href = loginUrl;\n }, (err) => {\n console.error(err);\n });\n }\n\n public loadSessionData(): void {\n let data;\n let token;\n let refreshToken;\n if (this.environment.production) {\n const u = this.cryptoService.encrypt(USERDATA);\n const t = this.cryptoService.encrypt(TOKEN);\n const r = this.cryptoService.encrypt(REFRESH_TOKEN);\n data = window.localStorage.getItem(u);\n token = window.localStorage.getItem(t);\n refreshToken = window.localStorage.getItem(r);\n if (data && token && refreshToken) {\n data = this.cryptoService.decrypt(data);\n token = this.cryptoService.decrypt(token);\n refreshToken = this.cryptoService.decrypt(refreshToken);\n }\n } else {\n data = window.localStorage.getItem(USERDATA);\n token = window.localStorage.getItem(TOKEN);\n refreshToken = window.localStorage.getItem(REFRESH_TOKEN);\n }\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n this.setTokens(token, refreshToken);\n this.setUserdata(user);\n }\n }\n\n userHasOptionsInApp(userId: any, applicationId: any): Observable<any> {\n return this.http.get<any>(this.endPoint + `/security/option/${applicationId}/${userId}`)\n .pipe(\n map(res => res));\n }\n\n checkAppPermissions(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n console.log(this.userdata?.userId, this.applicationId);\n if (this.applicationId) {\n this.userHasOptionsInApp(this.userdata?.userId, this.applicationId).subscribe(res => {\n console.log(res);\n if (res.data) {\n resolve('ok');\n } else {\n this.getHomeUrl().subscribe(res1 => {\n console.log(res1);\n const homeUrl = res1.data;\n window.location.href = homeUrl;\n reject('nok');\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n }\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n } else {\n resolve('ok');\n }\n });\n return promise;\n }\n\n\n // eslint-disable-next-line max-len\n public getOptionsUser(applicationId: number | null, type: string | null, language: string | null, entityCode: string | null, parentOptionId: number | null, includeData: boolean | null): Observable<any> {\n const param = {\n userId: this.userdata?.userId,\n applicationId,\n type,\n language,\n entityCode,\n parentOptionId,\n includeData\n };\n return this.http.post<any>(this.endPoint + '/security/option/user', param)\n .pipe(\n map(res => res));\n }\n\n registerException(param: FrontEndException): Observable<any> {\n const headers = new HttpHeaders().set('skipError', 'true');\n return this.http.post<any>(this.endPoint + '/auth/exception/log', param, {headers})\n .pipe(\n map(res => res));\n }\n\n saveStorageData(key: string, value: string): void {\n if (this.environment.production) {\n const k = this.cryptoService.encrypt(key);\n const v = this.cryptoService.encrypt(value);\n window.localStorage.setItem(k, v);\n } else {\n window.localStorage.setItem(key, value);\n }\n }\n\n deleteStorageData(key: string): void {\n if (this.environment.production) {\n const k = this.cryptoService.encrypt(key);\n window.localStorage.removeItem(k);\n } else {\n window.localStorage.removeItem(key);\n }\n }\n\n getStorageData(key: string): string | null {\n let res: string | null;\n if (this.environment.production) {\n const k = this.cryptoService.encrypt(key);\n const v = window.localStorage.getItem(k);\n if (v) {\n res = this.cryptoService.decrypt(v);\n return res;\n } else {\n res = null;\n }\n } else {\n res = window.localStorage.getItem(key);\n }\n return res;\n }\n\n\n public removeUrlData(): void {\n const url = new URL(window.location.href);\n const queryParams = url.searchParams;\n queryParams.delete('code');\n const newUrl = url.origin + url.pathname + '?' + queryParams.toString();\n window.history.replaceState({}, document.title, newUrl);\n }\n\n public checkSessionData(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let data;\n let token;\n let refreshToken;\n\n const currentUrl = new URL(window.location.href);\n const code = currentUrl.searchParams.get('code');\n console.log('code', code);\n if (code) {\n const codeDecoded = this.getDecodedAuthCode(code);\n // console.log('code', codeDecoded);\n const decoded = this.jwtService.decodeToken(codeDecoded);\n this.getTokenClientCode(codeDecoded, decoded.azp).subscribe({\n next: (res) => {\n console.log(res);\n token = res.access_token;\n refreshToken = res.refresh_token;\n this.saveCredentials(token, refreshToken);\n this.checkAppPermissions().then((res1) => {\n console.log(res1);\n this.removeUrlData();\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n },\n error: (err) => {\n console.error(err);\n reject(err);\n }\n });\n } else {\n data = this.getStorageData(USERDATA);\n token = this.getStorageData(TOKEN);\n refreshToken = this.getStorageData(REFRESH_TOKEN);\n if (data && token && refreshToken) {\n this.saveCredentials(token, refreshToken);\n this.checkAppPermissions().then((res1) => {\n console.log(res1);\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n } else {\n const url = window.location.href;\n if (url.indexOf('/redirect')>-1) {\n resolve('OK');\n } else {\n this.destroyCredentials();\n this.destroyUserData();\n this.getLoginUrl().subscribe(res1 => {\n console.log(res1);\n this.loginUrl = res1.data;\n if (url.indexOf('/login')<0 && url.indexOf('/forgot')<0 &&\n url.indexOf('/reset')<0 && url.indexOf('/verify')<0 &&\n url.indexOf('/sign_up')<0) {\n window.location.href = this.loginUrl + '?continue='+encodeURIComponent(url);\n }\n resolve('NOK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n }\n }\n }\n });\n return promise;\n }\n\n\n\n public checkSessionDataMicrofront(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let data;\n let token;\n let refreshToken;\n if (this.environment.production) {\n const u = this.cryptoService.encrypt(USERDATA);\n const t = this.cryptoService.encrypt(TOKEN);\n const r = this.cryptoService.encrypt(REFRESH_TOKEN);\n const d1 = window.localStorage.getItem(u);\n const d2 = window.localStorage.getItem(t);\n const d3 = window.localStorage.getItem(r);\n if (d1 && d2 && d3) {\n data = this.cryptoService.decrypt(d1);\n token = this.cryptoService.decrypt(d2);\n refreshToken = this.cryptoService.decrypt(d3);\n }\n } else {\n data = window.localStorage.getItem(USERDATA);\n token = window.localStorage.getItem(TOKEN);\n refreshToken = window.localStorage.getItem(REFRESH_TOKEN);\n }\n if (data && token && refreshToken) {\n console.log('local session ok');\n this.saveCredentials(token, refreshToken);\n resolve('OK');\n } else {\n console.error('local session nok');\n reject('NOK');\n }\n });\n return promise;\n }\n\n public getAuthCode(): string {\n const enc = this.cryptoService.encrypt(this.refreshToken?this.refreshToken:'');\n return encodeURIComponent(enc);\n }\n\n private getDecodedAuthCode(code: string): string {\n const dec = decodeURIComponent(code);\n return this.cryptoService.decrypt(dec);\n }\n\n}\n\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable max-lines-per-function */\n/* eslint-disable quote-props */\nimport { HttpErrorResponse, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// import { Router } from '@angular/router';\nimport { AlertComponent } from '../alert/alert.component';\nimport { FrontEndException } from '../user.model';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n applicationId: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog,\n @Inject('environment') environment: any\n ) {\n this.applicationId = environment.applicationId;\n }\n\n\n // eslint-disable-next-line max-lines-per-function, complexity\n showErrorMessage(error: HttpErrorResponse, request: HttpRequest<any>): void {\n console.log('error: ', error);\n this.registerLog(error, request);\n const msgs: any = this.getInterceptorMessages();\n switch (error.status) {\n case 302: {\n this.messageSnackError(error);\n break;\n }\n case 400: {\n if (error.error.error === 'invalid_grant') {\n this.goNavigateLogin(msgs);\n } else {\n this.showSnackError(error.message, ['snack-error']);\n }\n break;\n }\n case 403: {\n this.goNavigateLogin(msgs);\n break;\n }\n case 404: {\n this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);\n break;\n }\n case 409: {\n this.messageDialog(error, msgs);\n break;\n }\n case 412: {\n this.showSnackError(error.error.responseMessage??error.error.message, ['snack-error']);\n break;\n }\n case 422: {\n this.messageDialog(error, msgs);\n break;\n }\n case 428: {\n this.showSnackError(error.error.responseMessage??error.error.message, ['snack-error']);\n break;\n }\n case 500: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 503: {\n this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);\n break;\n }\n case -1: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n case 0: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n }\n }\n\n messageSnackError(error: any): void {\n const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :\n error.error.message ? error.error.message : error.message;\n this.showSnackError(errorMessage, ['snack-error']);\n }\n\n goNavigateLogin(msgs: any): void {\n // if (this.router.url !== '/login') {\n this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);\n // this.router.navigate(['/login']);\n this.auth.destroyCredentials();\n this.auth.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n // }\n }\n\n messageAlertDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.description) {\n message = error.error.description;\n if (error.error.exception)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exception;}\n } else if (error.error.responseMessage) {\n message = error.error.responseMessage;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.error.message) {\n message = error.error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n if (error.error.referenceError)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.referenceError;}\n } else if (error.message) {\n message = error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: {title: msgs.auth_interceptor.title, message, icon:'warn', okText:msgs.auth_interceptor.accept_text}\n });\n }\n\n messageDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.description) {\n message = error.error.description;\n } else if (error.error.responseMessage) {\n message = error.error.responseMessage;\n } else if (error.error.message) {\n message = error.error.message;\n } else if (error.message) {\n message = error.message;\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: {title: msgs.auth_interceptor.title, message, icon:'warn', okText:msgs.auth_interceptor.accept_text}\n });\n }\n\n showSnackError(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n setInterceptorMessages(message: any): void {\n this.interceptorMessages = message;\n }\n\n // eslint-disable-next-line max-lines-per-function\n getInterceptorMessages(): string {\n if (!this.interceptorMessages) {\n let lang = window.localStorage.getItem('LANG');\n if (!lang) {\n const userLang = navigator.language;\n lang = userLang.split('-')[0];\n }\n const messagesEn = {\n auth_interceptor : {\n session_lost :'Session lost, you have to login again.',\n not_found: 'Resource not found',\n title: 'We are sorry',\n message: 'We had a problem trying to process your request.',\n code:'Code',\n unavailable:'Service unavailable, please try again in a few minutes.',\n connection_error:'Could not connect to server, please check your network connection.',\n accept_text: 'OK',\n cancel_text: 'Cancel'\n }\n };\n const messagesEs = {\n auth_interceptor: {\n session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',\n not_found: 'Recurso no encontrado',\n title: 'Lo sentimos',\n message: 'Tuvimos un problema al tratar de procesar su solicitud.',\n code: 'Código',\n unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',\n connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.',\n accept_text: 'Aceptar',\n cancel_text: 'Cancelar'\n }\n };\n if (lang && lang==='es') {\n this.interceptorMessages = messagesEs;\n } else {\n this.interceptorMessages = messagesEn;\n }\n }\n return this.interceptorMessages;\n }\n\n\n registerLog(error: HttpErrorResponse, request: HttpRequest<any>): void {\n const u = this.auth.getUserdata();\n const param: FrontEndException = {\n httpStatus: error.status,\n httpStatusText: error.statusText,\n errorMessage: error.message,\n currentUrl: window.location.href,\n requestUrl: request.urlWithParams?request.urlWithParams: undefined,\n requestBody: request.body?JSON.stringify(request.body):undefined,\n userId: u?u.userId: undefined,\n applicationId: this.applicationId,\n requestDate: new Date()\n };\n this.auth.registerException(param).subscribe({\n next: (response) => {\n console.log('registerException', response);\n },\n error: (err: any) => {\n console.error('registerException', err);\n }\n });\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n\n@Injectable()\nexport class UserEventService {\n\n endPoint: string;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPointCore;\n }\n\n public registerUserEvent(eventType: string,\n optionId: number | null,\n entityType: string | null,\n entityId: string | null,\n paramsIn: string | null,\n paramsOut: string | null): Observable<any> {\n const param = {\n eventType,\n optionId,\n entityType,\n entityId,\n paramsIn,\n paramsOut\n };\n return this.http.post<any>(this.endPoint + '/security/user/event', param)\n .pipe(\n map((res: any) => res));\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CryptoService } from './services/crypto.service';\nimport { AlertComponent } from './alert/alert.component';\nimport { MessagesService } from './services/messages.service';\nimport { SessionService } from './services/session.service';\nimport { SsiSecurityCommonsComponent } from './ssi-security-commons.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { JwtService } from './services/jwt.service';\nimport { CommonModule } from '@angular/common';\nimport { UserEventService } from \"./services/user-event.service\";\n\n\n@NgModule({\n declarations: [\n SsiSecurityCommonsComponent,\n AlertComponent\n ],\n imports: [\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule,\n CommonModule\n ],\n exports: [\n SsiSecurityCommonsComponent\n ],\n providers: [\n MessagesService,\n SessionService,\n CryptoService,\n JwtService,\n UserEventService\n ]\n})\nexport class SsiSecurityCommonsModule {\n static forRoot(environment: any): ModuleWithProviders<SsiSecurityCommonsModule> {\n return {\n ngModule: SsiSecurityCommonsModule,\n providers: [{provide: 'environment', useValue: environment}]\n };\n }\n}\n","/* eslint-disable */\nimport { Inject, Injectable, Injector } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MessagesService } from './messages.service';\nimport { CryptoService } from './crypto.service';\nimport { Router } from '@angular/router';\nimport { SessionService } from './session.service';\nimport { LANG, TOKEN } from '../shared/constants';\nimport { JwtService } from './jwt.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n private environment;\n\n constructor(private cryptoService: CryptoService, @Inject('environment') environment: any) {\n console.log('AuthInterceptor constructor');\n this.environment = environment;\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n let token;\n if(this.environment.production) {\n const t = this.cryptoService.encrypt(TOKEN);\n const to = window.localStorage.getItem(t);\n if (to) {\n token = this.cryptoService.decrypt(to);\n }\n } else {\n token = window.localStorage.getItem(TOKEN);\n }\n\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n let body = request.body;\n let bodyStr = JSON.stringify(body);\n var newBody = {\n encrypted: this.cryptoService.encrypt(bodyStr)\n }\n request = request.clone({\n body: newBody\n });\n }\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token,\n }\n });\n }\n\n const l = window.localStorage.getItem(LANG);\n if (l && request.url.indexOf(this.environment.authEndPoint)<0) {\n request = request.clone({\n headers: request.headers.append('Language', l)\n });\n }\n return next.handle(request);\n }\n}\n\n\n@Injectable()\nexport class ResponseInterceptor implements HttpInterceptor {\n\n private messages: MessagesService | undefined;\n private isRefreshing = false;\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n constructor(private injector: Injector,\n private router: Router,\n private cryptoService: CryptoService,\n private jwtService: JwtService,\n private sessionService: SessionService) {\n setTimeout(() => {\n this.messages = this.injector.get(MessagesService);\n })\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true' && event.body.encrypted){\n event = event.clone({body: this.decryptBody(event.body)});\n }\n }\n return event;\n }),\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n console.error(error);\n let nerror = error;\n if (this.router.url != '/login' && this.router.url.indexOf('/login')<0) {\n if (nerror.status === 401) {\n return this.handle401Error(request, next);\n } else {\n let skipError = request.headers.get('skipError');\n if(skipError && skipError==='true'){\n return throwError(nerror);\n } else {\n this.messages?.showErrorMessage(nerror, request);\n }\n }\n } else {\n return throwError(nerror);\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\n let encrypted = body.encrypted;\n let strJson = this.cryptoService.decrypt(encrypted);\n return JSON.parse(strJson);\n }\n\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.refreshTokenSubject.next(null);\n const refreshToken = this.sessionService.getRefreshToken();\n if (refreshToken){\n const decoded = this.jwtService.decodeToken(refreshToken);\n return this.sessionService.getNewTokenClient(refreshToken, decoded.azp).pipe(\n switchMap((res: any) => {\n console.log('refresh token response');\n console.log(res);\n this.isRefreshing = false;\n this.sessionService.setToken(res.access_token);\n this.sessionService.setRefreshToken(res.refresh_token);\n this.refreshTokenSubject.next(res.access_token);\n return next.handle(this.addTokenHeader(request, res.access_token));\n }),\n catchError((err) => {\n this.isRefreshing = false;\n this.sessionService.logout();\n this.goToLogin();\n return throwError(err);\n })\n );\n }\n } else {\n return this.refreshTokenSubject.pipe(\n filter(token => token !== null),\n take(1),\n switchMap((token) => next.handle(this.addTokenHeader(request, token)))\n );\n }\n }\n\n private addTokenHeader(request: HttpRequest<any>, token: string) {\n return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });\n }\n\n private goToLogin(): void {\n this.sessionService.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n }\n\n}\n\n\n\n\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable prefer-const */\nimport { Inject, Injectable } from '@angular/core';\nimport { UserWebauthn } from '../user.model';\nimport { SessionService } from './session.service';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, map } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WebAuthnService {\n\n webAuthnAvailable = !!navigator.credentials && !!navigator.credentials.create;\n environment: any;\n\n public constructor(\n private sessionService: SessionService,\n private http: HttpClient,\n private snackBar: MatSnackBar,\n @Inject('environment') environment: any\n ) {\n this.environment = environment;\n }\n\n webAuthnSignup(user: UserWebauthn): Promise<any> {\n console.log('[webAuthnSignup]');\n const publicKeyCredentialCreationOptions: PublicKeyCredentialCreationOptions = {\n challenge: this.getChallenge(),\n rp: {\n name: 'WebAuthn',\n },\n user: {\n id: Uint8Array.from(user.id, c => c.charCodeAt(0)),\n name: user.email,\n displayName: user.email,\n },\n pubKeyCredParams: [{ alg: -7, type: 'public-key' }],\n authenticatorSelection: {\n authenticatorAttachment: 'platform',\n },\n timeout: 60000,\n attestation: 'direct'\n };\n\n return navigator.credentials.create({\n publicKey: publicKeyCredentialCreationOptions,\n });\n\n }\n\n webAuthnSignin(user: UserWebauthn): Promise<any> {\n console.log(user);\n /* {\n \"id\": \"b18ee077-f896-44f4-a2d4-3ac831eb1c90\",\n \"email\": \"test.user@email.com\",\n \"password\": \"\",\n \"credentials\": [\n [\n {\n \"id\": {},\n \"type\": \"public-key\"\n }\n ]\n ]\n } */\n let publicKeyCredentials = {\n challenge: this.getChallenge(),\n allowCredentials: user.credentials[0]\n };\n return navigator.credentials.get({ publicKey: publicKeyCredentials });\n }\n\n\n getChallenge(): Uint8Array {\n return Uint8Array.from('jEfcn1CsGFxBiXYtJMSGDycPqPoyFJ3Z', c => c.charCodeAt(0));\n }\n\n register(user: UserWebauthn, newCredentialInfo: any): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let enc = new TextDecoder('utf-8');\n let clientDataJSON = enc.decode(newCredentialInfo.response.clientDataJSON);\n console.log(clientDataJSON);\n let clientData = JSON.parse(clientDataJSON);\n console.log(clientData);\n const publicKey = this.arrayBufferToBase64Url(newCredentialInfo.rawId);\n let idList = [{\n // id: newCredentialInfo.rawId,\n id: publicKey,\n type: 'public-key'\n }];\n user.credentials.push(idList);\n console.log(user);\n this.addAttributeUser(user.id, 'webauthn_key', publicKey).subscribe({\n next: (res) => {\n console.log(res);\n resolve(res);\n },\n error: (err) => {\n console.error(err);\n reject(err);\n }\n });\n });\n return promise;\n }\n\n\n base64UrlToArrayBuffer(base64UrlString: string): ArrayBuffer {\n const base64String = base64UrlString.replace(/-/g, '+').replace(/_/g, '/');\n const paddedBase64String = base64String.padEnd(Math.ceil(base64String.length / 4) * 4, '=');\n const uint8Array = new Uint8Array(\n atob(paddedBase64String)\n .split('')\n .map((char) => char.charCodeAt(0))\n );\n return uint8Array.buffer;\n }\n\n arrayBufferToBase64Url(arrayBuffer: ArrayBuffer): string {\n const uint8Array = new Uint8Array(arrayBuffer);\n let base64String = btoa(String.fromCharCode.apply(null, Array.from(uint8Array)));\n base64String = base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n return base64String;\n }\n\n\n signUp(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n if (this.webAuthnAvailable) {\n const userData = this.sessionService.getUserdata();\n if (userData) {\n let user = {\n id: userData?.userId,\n email: userData?.email,\n credentials: []\n };\n this.webAuthnSignup(user)\n .then((credential: PublicKeyCredential) => {\n console.log('credentials.create RESPONSE', credential);\n this.register(user, credential).then((res: any) => {\n console.log(res);\n this.showSnackBar(this.getMessage('signUpOk'), ['snack-success']);\n resolve(this.getMessage('signUpOk'));\n }).catch((err) => {\n console.error(err);\n this.showSnackBar(this.getMessage('signUpNok'), ['snack-error']);\n reject(this.getMessage('signUpNok'));\n });\n }).catch((error) => {\n console.error('credentials.create ERROR', error);\n this.showSnackBar(this.getMessage('signUpNok'), ['snack-error']);\n reject(this.getMessage('signUpNok'));\n });\n }\n } else {\n this.showSnackBar(this.getMessage('browserNok'), ['snack-error']);\n reject(this.getMessage('browserNok'));\n }\n });\n return promise;\n }\n\n\n signIn(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n if (this.webAuthnAvailable) {\n const userData = this.sessionService.getUserdata();\n if (userData) {\n let user = {\n id: userData?.userId,\n email: userData?.email,\n credentials: [{}]\n };\n\n this.getAttributeUser(user.id, 'webauthn_key').subscribe({\n next: (res) => {\n console.log(res);\n if (res.data && res.data.webauthn_key && res.data.webauthn_key.length > 0) {\n\n const cred = {\n id: this.base64UrlToArrayBuffer(res.data.webauthn_key[0]),\n type: 'public-key'\n };\n user.credentials.splice(0,1);\n user.credentials.push([cred]);\n\n this.webAuthnSignin(user).then((response) => {\n console.log('SUCCESSFULLY GOT AN ASSERTION!', response);\n resolve('ok');\n })\n .catch((error) => {\n console.error('FAIL', error);\n this.showSnackBar(this.getMessage('invalidCredentials'), ['snack-error']);\n reject(this.getMessage('invalidCredentials'));\n });\n } else {\n this.showSnackBar(this.getMessage('noCredentials'), ['snack-error']);\n reject(this.getMessage('noCredentials'));\n }\n },\n error: (err) => {\n console.error(err);\n this.showSnackBar(this.getMessage('errorRetrievingCredentials'), ['snack-error']);\n reject(this.getMessage('errorRetrievingCredentials'));\n }\n });\n }\n } else {\n this.showSnackBar(this.getMessage('browserNok'), ['snack-error']);\n reject(this.getMessage('browserNok'));\n }\n });\n return promise;\n }\n\n\n addAttributeUser(userId: any, code: any, value: any): Observable<any> {\n return this.http.post<any>(this.environment.endPoint + `/user/attribute/value/${userId}/${code}/${value}`,{})\n .pipe(\n map(res => res));\n }\n\n getAttributeUser(userId: any, code: any): Observable<any> {\n return this.http.get<any>(this.environment.endPoint + `/user/attribute/value/${userId}/${code}`)\n .pipe(\n map(res => res));\n }\n\n showSnackBar(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n getMessage(code: string): string {\n let msg = '';\n const lang = window.localStorage.getItem('LANG');\n const messagesEn: any = {\n signUpOk: 'Credentials registered successfully',\n signUpNok: 'A problem occurred while registering credentials',\n browserNok: 'The browser does not support this functionality',\n noCredentials: 'The user has no stored credentials',\n invalidCredentials: 'The credentials are invalid',\n errorRetrievingCredentials: 'There was a problem retrieving credentials',\n };\n const messagesEs: any = {\n signUpOk: 'Credenciales registradas exitosamente',\n signUpNok: 'Se produjo un problema al registrar las credenciales',\n browserNok: 'El navegador no soporta esta funcionalidad',\n noCredentials: 'El usuario no tiene credenciales almacenadas',\n invalidCredentials: 'Las credenciales no son válidas',\n errorRetrievingCredentials: 'Se produjo un problema al recuperar las credenciales',\n };\n if (lang && lang==='en') {\n msg = messagesEn[code];\n } else {\n msg = messagesEs[code];\n }\n return msg;\n }\n\n}\n","/*\n * Public API Surface of ssi-security-commons\n */\n\nexport * from './lib/ssi-security-commons.service';\nexport * from './lib/ssi-security-commons.component';\nexport * from './lib/ssi-security-commons.module';\nexport * from './lib/services/auth-interceptor.service';\nexport * from './lib/services/session.service';\nexport * from './lib/services/messages.service';\nexport * from './lib/services/web-authn.service';\nexport * from './lib/user.model';\nexport * from './lib/services/crypto.service';\nexport * from './lib/services/jwt.service';\nexport * from './lib/shared/constants';\nexport * from './lib/services/user-event.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CryptoService","i3.JwtService","i2","i1.CryptoService","i4.SessionService","map"],"mappings":"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"}
1
+ {"version":3,"file":"ssi-security-commons.mjs","sources":["../../../projects/ssi-security-commons/src/lib/ssi-security-commons.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.component.ts","../../../projects/ssi-security-commons/src/lib/services/crypto.service.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.html","../../../projects/ssi-security-commons/src/lib/shared/constants.ts","../../../projects/ssi-security-commons/src/lib/services/jwt.service.ts","../../../projects/ssi-security-commons/src/lib/services/session.service.ts","../../../projects/ssi-security-commons/src/lib/services/messages.service.ts","../../../projects/ssi-security-commons/src/lib/services/user-event.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.module.ts","../../../projects/ssi-security-commons/src/lib/services/auth-interceptor.service.ts","../../../projects/ssi-security-commons/src/lib/services/web-authn.service.ts","../../../projects/ssi-security-commons/src/public-api.ts","../../../projects/ssi-security-commons/src/ssi-security-commons.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SsiSecurityCommonsService {\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: ` <p>ssi-security-commons works!</p>\n `,\n styles: [],\n standalone: false\n})\nexport class SsiSecurityCommonsComponent {\n\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CryptoService {\n\n private configuration: any;\n private key: any;\n private secret = '&E)H@McQfThWmZq4';\n\n constructor() {\n this.configuration = {\n mode: CryptoJS.mode.ECB\n };\n const hash = CryptoJS.SHA1(this.secret);\n this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n }\n\n encrypt(text: string): string {\n if (!text) {return '';}\n return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();\n }\n\n decrypt(text: string): string {\n if (!text) {return '';}\n return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n encryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.encrypt(text, key, this.configuration).toString();\n }\n\n decryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface DialogData {\n title?: string;\n icon?: string;\n type?: string;\n message?: string;\n okText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'lib-app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n standalone: false\n})\nexport class AlertComponent {\n\n constructor(\n public dialogRef: MatDialogRef<AlertComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(null);\n }\n}\n","<div class=\"sec-alert-icon\" *ngIf=\"data.icon==='warn'\">\n <svg width=\"48\" height=\"49\" viewBox=\"0 0 48 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M24 13.5C24.69 13.5 25.25 14.06 25.25 14.75V27.25C25.25 27.5815 25.1183 27.8995 24.8839 28.1339C24.6495 28.3683 24.3315 28.5 24 28.5C23.6685 28.5 23.3505 28.3683 23.1161 28.1339C22.8817 27.8995 22.75 27.5815 22.75 27.25V14.75C22.75 14.06 23.31 13.5 24 13.5ZM24 34.5C24.5304 34.5 25.0391 34.2893 25.4142 33.9142C25.7893 33.5391 26 33.0304 26 32.5C26 31.9696 25.7893 31.4609 25.4142 31.0858C25.0391 30.7107 24.5304 30.5 24 30.5C23.4696 30.5 22.9609 30.7107 22.5858 31.0858C22.2107 31.4609 22 31.9696 22 32.5C22 33.0304 22.2107 33.5391 22.5858 33.9142C22.9609 34.2893 23.4696 34.5 24 34.5ZM4 24.5C4 13.454 12.954 4.5 24 4.5C35.046 4.5 44 13.454 44 24.5C44 35.546 35.046 44.5 24 44.5C12.954 44.5 4 35.546 4 24.5ZM24 7C14.335 7 6.5 14.835 6.5 24.5C6.5 34.165 14.335 42 24 42C33.665 42 41.5 34.165 41.5 24.5C41.5 14.835 33.665 7 24 7Z\" fill=\"#FF4021\"/>\n </svg>\n</div>\n<h1 mat-dialog-title class=\"sec-alert-title\">{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width sec-alert-content\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div class=\"sec-alert-actions\"> \n <button mat-flat-button color=\"primary\" class=\"sec-alert-ok\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n <button mat-flat-button class=\"sec-alert-cancel\" (click)=\"onCancel()\" *ngIf=\"data.cancelText\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n</div>\n","export const TOKEN = 'TOKEN';\nexport const REFRESH_TOKEN = 'REFRESH_TOKEN';\nexport const USERDATA = 'USERDATA';\nexport const LANG = 'LANG';\n","/* eslint-disable */\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class JwtService {\n\n public decodeTokenOld(token: string) {\n const _decodeToken = (token: string) => {\n try {\n return JSON.parse(atob(token));\n } catch {\n return;\n }\n };\n return token\n .split('.')\n .map(token => _decodeToken(token))\n .reduce((acc, curr) => {\n if (!!curr) acc = { ...acc, ...curr };\n return acc;\n }, Object.create(null));\n }\n\n public decodeToken(token: string) {\n const payload = token.split('.')[1];\n // Add padding if needed\n const base64 = payload.replace(/-/g, '+').replace(/_/g, '/');\n const padded = base64.padEnd(base64.length + (4 - base64.length % 4) % 4, '=');\n // Decode Base64 to binary string\n const binary = atob(padded);\n // Convert binary string to UTF-8 correctly\n const utf8String = decodeURIComponent(\n Array.from(binary)\n .map(c => '%' + c.charCodeAt(0).toString(16).padStart(2, '0'))\n .join('')\n );\n // Parse JSON payload\n return JSON.parse(utf8String);\n }\n\n}\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable arrow-body-style */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { FrontEndException, UserData } from '../user.model';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { JwtService } from './jwt.service';\nimport { CryptoService } from './crypto.service';\nimport { REFRESH_TOKEN, TOKEN, USERDATA } from '../shared/constants';\n\n\n@Injectable()\nexport class SessionService {\n\n userdata: UserData | undefined;\n token: string | undefined;\n refreshToken: string | undefined;\n endPoint: string;\n loginUrl = 'http://localhost:4200/login';\n applicationId: any;\n environment: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any,\n private cryptoService: CryptoService,\n private jwtService: JwtService) {\n this.endPoint = environment.endPointCore;\n this.applicationId = environment.applicationId;\n this.environment = environment;\n }\n\n public buildUserdataFromToken(token: string): any {\n const tokenData = this.jwtService.decodeToken(token);\n const userData: UserData = {\n givenName: tokenData.given_name,\n familyName: tokenData.family_name,\n name: tokenData.name,\n roles: tokenData.realm_access.roles,\n userId: tokenData.sub,\n username: tokenData.preferred_username,\n email: tokenData.email,\n emailVerified: tokenData.email_verified,\n countryCode: tokenData.country_code\n };\n return userData;\n }\n\n public async reviewSessionData(): Promise<any> {\n const value = await this.checkSessionData() as any;\n console.log(`async result: ${value}`);\n return value;\n }\n\n public setUserdata(userdata: any): void {\n this.userdata = userdata;\n }\n\n public setTokens(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n }\n\n public getUserdata(): UserData | undefined {\n return this.userdata;\n }\n\n public setRefreshToken(refreshToken: any): void {\n this.refreshToken = refreshToken;\n this.saveStorageData(REFRESH_TOKEN, refreshToken);\n }\n\n public getRefreshToken(): string | undefined {\n return this.refreshToken;\n }\n\n public setToken(token: any): any {\n this.token = token;\n this.saveStorageData(TOKEN, token);\n }\n\n public getToken(): any {\n return this.token;\n }\n\n public destroyCredentials(): void {\n this.token = undefined;\n this.refreshToken = undefined;\n this.deleteStorageData(TOKEN);\n this.deleteStorageData(REFRESH_TOKEN);\n }\n\n public destroyUserData(): void {\n this.userdata = undefined;\n this.deleteStorageData(USERDATA);\n }\n\n public saveCredentials(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n this.saveStorageData(TOKEN, token);\n this.saveStorageData(REFRESH_TOKEN, refreshToken);\n this.saveUserData(this.buildUserdataFromToken(token));\n }\n\n public saveUserData(userData: any): void {\n this.userdata = userData;\n this.saveStorageData(USERDATA, JSON.stringify(userData));\n }\n\n public isLoggedIn(): boolean {\n return !!this.userdata;\n }\n\n logout(): Promise<any> {\n let clientId = this.environment.authClient;\n if (this.refreshToken) {\n const decoded = this.jwtService.decodeToken(this.refreshToken);\n clientId = decoded.azp;\n }\n return new Promise((resolve, reject) => {\n this.logoutApiClient(clientId).subscribe(res => {\n console.log(res);\n this.destroyCredentials();\n this.destroyUserData();\n this.goToLogin();\n resolve(null);\n }, (err) => {\n this.destroyCredentials();\n this.destroyUserData();\n console.error(err);\n reject(err);\n });\n });\n }\n\n getNewToken(refreshToken: string): any {\n console.log('getNewToken');\n const body = 'grant_type=refresh_token' + '&refresh_token=' + refreshToken + '&client_id=' + this.environment.authClient;\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/token`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n getNewTokenClient(refreshToken: string, clientId: string): any {\n console.log('getNewToken');\n const body = 'grant_type=refresh_token' + '&refresh_token=' + refreshToken + '&client_id=' + clientId;\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/token`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n getTokenClientCode(refreshToken: string, clientId: string): Observable<any> {\n console.log('getNewToken');\n const body = 'grant_type=refresh_token' + '&refresh_token=' + refreshToken + '&client_id=' + clientId;\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/token`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n\n getLoginUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/login/url/'+this.environment.authClient)\n .pipe(\n map(res => res));\n }\n\n getHomeUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/home/url/'+this.environment.authClient)\n .pipe(\n map(res => res));\n }\n\n logoutApi(): Observable<any> {\n const body = 'refresh_token=' + this.refreshToken + '&client_id=' + this.environment.authClient;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/logout`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n logoutApiClient(clientId: string): Observable<any> {\n const body = 'refresh_token=' + this.refreshToken + '&client_id=' + clientId;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.post<any>(`${this.environment.authEndPoint}/realms/${this.environment.authRealm}/protocol/openid-connect/logout`,\n body, {headers})\n .pipe(\n map(res => res));\n }\n\n goToLogin(): void {\n this.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n window.location.href = loginUrl;\n }, (err) => {\n console.error(err);\n });\n }\n\n public loadSessionData(): void {\n let data;\n let token;\n let refreshToken;\n if (this.environment.production) {\n const u = this.cryptoService.encrypt(USERDATA);\n const t = this.cryptoService.encrypt(TOKEN);\n const r = this.cryptoService.encrypt(REFRESH_TOKEN);\n data = window.localStorage.getItem(u);\n token = window.localStorage.getItem(t);\n refreshToken = window.localStorage.getItem(r);\n if (data && token && refreshToken) {\n data = this.cryptoService.decrypt(data);\n token = this.cryptoService.decrypt(token);\n refreshToken = this.cryptoService.decrypt(refreshToken);\n }\n } else {\n data = window.localStorage.getItem(USERDATA);\n token = window.localStorage.getItem(TOKEN);\n refreshToken = window.localStorage.getItem(REFRESH_TOKEN);\n }\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n this.setTokens(token, refreshToken);\n this.setUserdata(user);\n }\n }\n\n userHasOptionsInApp(userId: any, applicationId: any): Observable<any> {\n return this.http.get<any>(this.endPoint + `/security/option/${applicationId}/${userId}`)\n .pipe(\n map(res => res));\n }\n\n checkAppPermissions(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n console.log(this.userdata?.userId, this.applicationId);\n if (this.applicationId) {\n this.userHasOptionsInApp(this.userdata?.userId, this.applicationId).subscribe(res => {\n console.log(res);\n if (res.data) {\n resolve('ok');\n } else {\n this.getHomeUrl().subscribe(res1 => {\n console.log(res1);\n const homeUrl = res1.data;\n window.location.href = homeUrl;\n reject('nok');\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n }\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n } else {\n resolve('ok');\n }\n });\n return promise;\n }\n\n\n // eslint-disable-next-line max-len\n public getOptionsUser(applicationId: number | null, type: string | null, language: string | null, entityCode: string | null, parentOptionId: number | null, includeData: boolean | null): Observable<any> {\n const param = {\n userId: this.userdata?.userId,\n applicationId,\n type,\n language,\n entityCode,\n parentOptionId,\n includeData\n };\n return this.http.post<any>(this.endPoint + '/security/option/user', param)\n .pipe(\n map(res => res));\n }\n\n registerException(param: FrontEndException): Observable<any> {\n const headers = new HttpHeaders().set('skipError', 'true');\n return this.http.post<any>(this.endPoint + '/auth/exception/log', param, {headers})\n .pipe(\n map(res => res));\n }\n\n saveStorageData(key: string, value: string): void {\n if (this.environment.production) {\n const k = this.cryptoService.encrypt(key);\n const v = this.cryptoService.encrypt(value);\n window.localStorage.setItem(k, v);\n } else {\n window.localStorage.setItem(key, value);\n }\n }\n\n deleteStorageData(key: string): void {\n if (this.environment.production) {\n const k = this.cryptoService.encrypt(key);\n window.localStorage.removeItem(k);\n } else {\n window.localStorage.removeItem(key);\n }\n }\n\n getStorageData(key: string): string | null {\n let res: string | null;\n if (this.environment.production) {\n const k = this.cryptoService.encrypt(key);\n const v = window.localStorage.getItem(k);\n if (v) {\n res = this.cryptoService.decrypt(v);\n return res;\n } else {\n res = null;\n }\n } else {\n res = window.localStorage.getItem(key);\n }\n return res;\n }\n\n\n public removeUrlData(): void {\n const url = new URL(window.location.href);\n const queryParams = url.searchParams;\n queryParams.delete('code');\n const newUrl = url.origin + url.pathname + '?' + queryParams.toString();\n window.history.replaceState({}, document.title, newUrl);\n }\n\n public checkSessionData(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let data;\n let token;\n let refreshToken;\n\n const currentUrl = new URL(window.location.href);\n const code = currentUrl.searchParams.get('code');\n console.log('code', code);\n if (code) {\n const codeDecoded = this.getDecodedAuthCode(code);\n // console.log('code', codeDecoded);\n const decoded = this.jwtService.decodeToken(codeDecoded);\n this.getTokenClientCode(codeDecoded, decoded.azp).subscribe({\n next: (res) => {\n console.log(res);\n token = res.access_token;\n refreshToken = res.refresh_token;\n this.saveCredentials(token, refreshToken);\n this.checkAppPermissions().then((res1) => {\n console.log(res1);\n this.removeUrlData();\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n },\n error: (err) => {\n console.error(err);\n reject(err);\n }\n });\n } else {\n data = this.getStorageData(USERDATA);\n token = this.getStorageData(TOKEN);\n refreshToken = this.getStorageData(REFRESH_TOKEN);\n if (data && token && refreshToken) {\n this.saveCredentials(token, refreshToken);\n this.checkAppPermissions().then((res1) => {\n console.log(res1);\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n } else {\n const url = window.location.href;\n if (url.indexOf('/redirect')>-1) {\n resolve('OK');\n } else {\n this.destroyCredentials();\n this.destroyUserData();\n this.getLoginUrl().subscribe(res1 => {\n console.log(res1);\n this.loginUrl = res1.data;\n if (url.indexOf('/login')<0 && url.indexOf('/forgot')<0 &&\n url.indexOf('/reset')<0 && url.indexOf('/verify')<0 &&\n url.indexOf('/sign_up')<0) {\n window.location.href = this.loginUrl + '?continue='+encodeURIComponent(url);\n }\n resolve('NOK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n }\n }\n }\n });\n return promise;\n }\n\n\n\n public checkSessionDataMicrofront(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let data;\n let token;\n let refreshToken;\n if (this.environment.production) {\n const u = this.cryptoService.encrypt(USERDATA);\n const t = this.cryptoService.encrypt(TOKEN);\n const r = this.cryptoService.encrypt(REFRESH_TOKEN);\n const d1 = window.localStorage.getItem(u);\n const d2 = window.localStorage.getItem(t);\n const d3 = window.localStorage.getItem(r);\n if (d1 && d2 && d3) {\n data = this.cryptoService.decrypt(d1);\n token = this.cryptoService.decrypt(d2);\n refreshToken = this.cryptoService.decrypt(d3);\n }\n } else {\n data = window.localStorage.getItem(USERDATA);\n token = window.localStorage.getItem(TOKEN);\n refreshToken = window.localStorage.getItem(REFRESH_TOKEN);\n }\n if (data && token && refreshToken) {\n console.log('local session ok');\n this.saveCredentials(token, refreshToken);\n resolve('OK');\n } else {\n console.error('local session nok');\n reject('NOK');\n }\n });\n return promise;\n }\n\n public getAuthCode(): string {\n const enc = this.cryptoService.encrypt(this.refreshToken?this.refreshToken:'');\n return encodeURIComponent(enc);\n }\n\n private getDecodedAuthCode(code: string): string {\n const dec = decodeURIComponent(code);\n return this.cryptoService.decrypt(dec);\n }\n\n public refreshSession(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n const refreshToken = this.getRefreshToken();\n if (refreshToken) {\n const decoded = this.jwtService.decodeToken(refreshToken);\n this.getNewTokenClient(refreshToken, decoded.azp).subscribe({\n next: (res: any) => {\n console.log(res);\n this.setToken(res.access_token);\n this.setRefreshToken(res.refresh_token);\n this.saveCredentials(res.access_token, res.refresh_token);\n resolve('OK');\n },\n error: (err: any) => {\n console.error(err);\n reject(err);\n }\n });\n } else {\n reject('NOK');\n }\n });\n return promise;\n }\n\n}\n\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable max-lines-per-function */\n/* eslint-disable quote-props */\nimport { HttpErrorResponse, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// import { Router } from '@angular/router';\nimport { AlertComponent } from '../alert/alert.component';\nimport { FrontEndException } from '../user.model';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n applicationId: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog,\n @Inject('environment') environment: any\n ) {\n this.applicationId = environment.applicationId;\n }\n\n\n // eslint-disable-next-line max-lines-per-function, complexity\n showErrorMessage(error: HttpErrorResponse, request: HttpRequest<any>): void {\n console.log('error: ', error);\n this.registerLog(error, request);\n const msgs: any = this.getInterceptorMessages();\n switch (error.status) {\n case 302: {\n this.messageSnackError(error);\n break;\n }\n case 400: {\n if (error.error.error === 'invalid_grant') {\n this.goNavigateLogin(msgs);\n } else {\n this.showSnackError(error.message, ['snack-error']);\n }\n break;\n }\n case 403: {\n this.goNavigateLogin(msgs);\n break;\n }\n case 404: {\n this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);\n break;\n }\n case 409: {\n this.messageDialog(error, msgs);\n break;\n }\n case 412: {\n this.showSnackError(error.error.responseMessage??error.error.message, ['snack-error']);\n break;\n }\n case 422: {\n this.messageDialog(error, msgs);\n break;\n }\n case 428: {\n this.showSnackError(error.error.responseMessage??error.error.message, ['snack-error']);\n break;\n }\n case 500: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 503: {\n this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);\n break;\n }\n case -1: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n case 0: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n }\n }\n\n messageSnackError(error: any): void {\n const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :\n error.error.message ? error.error.message : error.message;\n this.showSnackError(errorMessage, ['snack-error']);\n }\n\n goNavigateLogin(msgs: any): void {\n // if (this.router.url !== '/login') {\n this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);\n // this.router.navigate(['/login']);\n this.auth.destroyCredentials();\n this.auth.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n // }\n }\n\n messageAlertDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.description) {\n message = error.error.description;\n if (error.error.exception)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exception;}\n } else if (error.error.responseMessage) {\n message = error.error.responseMessage;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.error.message) {\n message = error.error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n if (error.error.referenceError)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.referenceError;}\n } else if (error.message) {\n message = error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: {title: msgs.auth_interceptor.title, message, icon:'warn', okText:msgs.auth_interceptor.accept_text}\n });\n }\n\n messageDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.description) {\n message = error.error.description;\n } else if (error.error.responseMessage) {\n message = error.error.responseMessage;\n } else if (error.error.message) {\n message = error.error.message;\n } else if (error.message) {\n message = error.message;\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: {title: msgs.auth_interceptor.title, message, icon:'warn', okText:msgs.auth_interceptor.accept_text}\n });\n }\n\n showSnackError(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n setInterceptorMessages(message: any): void {\n this.interceptorMessages = message;\n }\n\n // eslint-disable-next-line max-lines-per-function\n getInterceptorMessages(): string {\n if (!this.interceptorMessages) {\n let lang = window.localStorage.getItem('LANG');\n if (!lang) {\n const userLang = navigator.language;\n lang = userLang.split('-')[0];\n }\n const messagesEn = {\n auth_interceptor : {\n session_lost :'Session lost, you have to login again.',\n not_found: 'Resource not found',\n title: 'We are sorry',\n message: 'We had a problem trying to process your request.',\n code:'Code',\n unavailable:'Service unavailable, please try again in a few minutes.',\n connection_error:'Could not connect to server, please check your network connection.',\n accept_text: 'OK',\n cancel_text: 'Cancel'\n }\n };\n const messagesEs = {\n auth_interceptor: {\n session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',\n not_found: 'Recurso no encontrado',\n title: 'Lo sentimos',\n message: 'Tuvimos un problema al tratar de procesar su solicitud.',\n code: 'Código',\n unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',\n connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.',\n accept_text: 'Aceptar',\n cancel_text: 'Cancelar'\n }\n };\n if (lang && lang==='es') {\n this.interceptorMessages = messagesEs;\n } else {\n this.interceptorMessages = messagesEn;\n }\n }\n return this.interceptorMessages;\n }\n\n\n registerLog(error: HttpErrorResponse, request: HttpRequest<any>): void {\n const u = this.auth.getUserdata();\n const param: FrontEndException = {\n httpStatus: error.status,\n httpStatusText: error.statusText,\n errorMessage: error.message,\n currentUrl: window.location.href,\n requestUrl: request.urlWithParams?request.urlWithParams: undefined,\n requestBody: request.body?JSON.stringify(request.body):undefined,\n userId: u?u.userId: undefined,\n applicationId: this.applicationId,\n requestDate: new Date()\n };\n this.auth.registerException(param).subscribe({\n next: (response) => {\n console.log('registerException', response);\n },\n error: (err: any) => {\n console.error('registerException', err);\n }\n });\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n\n@Injectable()\nexport class UserEventService {\n\n endPoint: string;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPointCore;\n }\n\n public registerUserEvent(eventType: string,\n optionId: number | null,\n entityType: string | null,\n entityId: string | null,\n paramsIn: string | null,\n paramsOut: string | null): Observable<any> {\n const param = {\n eventType,\n optionId,\n entityType,\n entityId,\n paramsIn,\n paramsOut\n };\n return this.http.post<any>(this.endPoint + '/security/user/event', param)\n .pipe(\n map((res: any) => res));\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CryptoService } from './services/crypto.service';\nimport { AlertComponent } from './alert/alert.component';\nimport { MessagesService } from './services/messages.service';\nimport { SessionService } from './services/session.service';\nimport { SsiSecurityCommonsComponent } from './ssi-security-commons.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { JwtService } from './services/jwt.service';\nimport { CommonModule } from '@angular/common';\nimport { UserEventService } from \"./services/user-event.service\";\n\n\n@NgModule({\n declarations: [\n SsiSecurityCommonsComponent,\n AlertComponent\n ],\n imports: [\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule,\n CommonModule\n ],\n exports: [\n SsiSecurityCommonsComponent\n ],\n providers: [\n MessagesService,\n SessionService,\n CryptoService,\n JwtService,\n UserEventService\n ]\n})\nexport class SsiSecurityCommonsModule {\n static forRoot(environment: any): ModuleWithProviders<SsiSecurityCommonsModule> {\n return {\n ngModule: SsiSecurityCommonsModule,\n providers: [{provide: 'environment', useValue: environment}]\n };\n }\n}\n","/* eslint-disable */\nimport { Inject, Injectable, Injector } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MessagesService } from './messages.service';\nimport { CryptoService } from './crypto.service';\nimport { Router } from '@angular/router';\nimport { SessionService } from './session.service';\nimport { LANG, TOKEN } from '../shared/constants';\nimport { JwtService } from './jwt.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n private environment;\n\n constructor(private cryptoService: CryptoService, @Inject('environment') environment: any) {\n console.log('AuthInterceptor constructor');\n this.environment = environment;\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n let token;\n if(this.environment.production) {\n const t = this.cryptoService.encrypt(TOKEN);\n const to = window.localStorage.getItem(t);\n if (to) {\n token = this.cryptoService.decrypt(to);\n }\n } else {\n token = window.localStorage.getItem(TOKEN);\n }\n\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n let body = request.body;\n let bodyStr = JSON.stringify(body);\n var newBody = {\n encrypted: this.cryptoService.encrypt(bodyStr)\n }\n request = request.clone({\n body: newBody\n });\n }\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token,\n }\n });\n }\n\n const l = window.localStorage.getItem(LANG);\n if (l && request.url.indexOf(this.environment.authEndPoint)<0) {\n request = request.clone({\n headers: request.headers.append('Language', l)\n });\n }\n return next.handle(request);\n }\n}\n\n\n@Injectable()\nexport class ResponseInterceptor implements HttpInterceptor {\n\n private messages: MessagesService | undefined;\n private isRefreshing = false;\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n constructor(private injector: Injector,\n private router: Router,\n private cryptoService: CryptoService,\n private jwtService: JwtService,\n private sessionService: SessionService) {\n setTimeout(() => {\n this.messages = this.injector.get(MessagesService);\n })\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true' && event.body.encrypted){\n event = event.clone({body: this.decryptBody(event.body)});\n }\n }\n return event;\n }),\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n console.error(error);\n let nerror = error;\n if (this.router.url != '/login' && this.router.url.indexOf('/login')<0) {\n if (nerror.status === 401) {\n return this.handle401Error(request, next);\n } else {\n let skipError = request.headers.get('skipError');\n if(skipError && skipError==='true'){\n return throwError(nerror);\n } else {\n this.messages?.showErrorMessage(nerror, request);\n }\n }\n } else {\n return throwError(nerror);\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\n let encrypted = body.encrypted;\n let strJson = this.cryptoService.decrypt(encrypted);\n return JSON.parse(strJson);\n }\n\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.refreshTokenSubject.next(null);\n const refreshToken = this.sessionService.getRefreshToken();\n if (refreshToken){\n const decoded = this.jwtService.decodeToken(refreshToken);\n return this.sessionService.getNewTokenClient(refreshToken, decoded.azp).pipe(\n switchMap((res: any) => {\n console.log('refresh token response');\n console.log(res);\n this.isRefreshing = false;\n this.sessionService.setToken(res.access_token);\n this.sessionService.setRefreshToken(res.refresh_token);\n this.refreshTokenSubject.next(res.access_token);\n return next.handle(this.addTokenHeader(request, res.access_token));\n }),\n catchError((err) => {\n this.isRefreshing = false;\n this.sessionService.logout();\n this.goToLogin();\n return throwError(err);\n })\n );\n }\n } else {\n return this.refreshTokenSubject.pipe(\n filter(token => token !== null),\n take(1),\n switchMap((token) => next.handle(this.addTokenHeader(request, token)))\n );\n }\n }\n\n private addTokenHeader(request: HttpRequest<any>, token: string) {\n return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });\n }\n\n private goToLogin(): void {\n this.sessionService.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n }\n\n}\n\n\n\n\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable prefer-const */\nimport { Inject, Injectable } from '@angular/core';\nimport { UserWebauthn } from '../user.model';\nimport { SessionService } from './session.service';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, map } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WebAuthnService {\n\n webAuthnAvailable = !!navigator.credentials && !!navigator.credentials.create;\n environment: any;\n\n public constructor(\n private sessionService: SessionService,\n private http: HttpClient,\n private snackBar: MatSnackBar,\n @Inject('environment') environment: any\n ) {\n this.environment = environment;\n }\n\n webAuthnSignup(user: UserWebauthn): Promise<any> {\n console.log('[webAuthnSignup]');\n const publicKeyCredentialCreationOptions: PublicKeyCredentialCreationOptions = {\n challenge: this.getChallenge(),\n rp: {\n name: 'WebAuthn',\n },\n user: {\n id: Uint8Array.from(user.id, c => c.charCodeAt(0)),\n name: user.email,\n displayName: user.email,\n },\n pubKeyCredParams: [{ alg: -7, type: 'public-key' }],\n authenticatorSelection: {\n authenticatorAttachment: 'platform',\n },\n timeout: 60000,\n attestation: 'direct'\n };\n\n return navigator.credentials.create({\n publicKey: publicKeyCredentialCreationOptions,\n });\n\n }\n\n webAuthnSignin(user: UserWebauthn): Promise<any> {\n console.log(user);\n /* {\n \"id\": \"b18ee077-f896-44f4-a2d4-3ac831eb1c90\",\n \"email\": \"test.user@email.com\",\n \"password\": \"\",\n \"credentials\": [\n [\n {\n \"id\": {},\n \"type\": \"public-key\"\n }\n ]\n ]\n } */\n let publicKeyCredentials = {\n challenge: this.getChallenge(),\n allowCredentials: user.credentials[0]\n };\n return navigator.credentials.get({ publicKey: publicKeyCredentials });\n }\n\n\n getChallenge(): Uint8Array {\n return Uint8Array.from('jEfcn1CsGFxBiXYtJMSGDycPqPoyFJ3Z', c => c.charCodeAt(0));\n }\n\n register(user: UserWebauthn, newCredentialInfo: any): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let enc = new TextDecoder('utf-8');\n let clientDataJSON = enc.decode(newCredentialInfo.response.clientDataJSON);\n console.log(clientDataJSON);\n let clientData = JSON.parse(clientDataJSON);\n console.log(clientData);\n const publicKey = this.arrayBufferToBase64Url(newCredentialInfo.rawId);\n let idList = [{\n // id: newCredentialInfo.rawId,\n id: publicKey,\n type: 'public-key'\n }];\n user.credentials.push(idList);\n console.log(user);\n this.addAttributeUser(user.id, 'webauthn_key', publicKey).subscribe({\n next: (res) => {\n console.log(res);\n resolve(res);\n },\n error: (err) => {\n console.error(err);\n reject(err);\n }\n });\n });\n return promise;\n }\n\n\n base64UrlToArrayBuffer(base64UrlString: string): ArrayBuffer {\n const base64String = base64UrlString.replace(/-/g, '+').replace(/_/g, '/');\n const paddedBase64String = base64String.padEnd(Math.ceil(base64String.length / 4) * 4, '=');\n const uint8Array = new Uint8Array(\n atob(paddedBase64String)\n .split('')\n .map((char) => char.charCodeAt(0))\n );\n return uint8Array.buffer;\n }\n\n arrayBufferToBase64Url(arrayBuffer: ArrayBuffer): string {\n const uint8Array = new Uint8Array(arrayBuffer);\n let base64String = btoa(String.fromCharCode.apply(null, Array.from(uint8Array)));\n base64String = base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n return base64String;\n }\n\n\n signUp(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n if (this.webAuthnAvailable) {\n const userData = this.sessionService.getUserdata();\n if (userData) {\n let user = {\n id: userData?.userId,\n email: userData?.email,\n credentials: []\n };\n this.webAuthnSignup(user)\n .then((credential: PublicKeyCredential) => {\n console.log('credentials.create RESPONSE', credential);\n this.register(user, credential).then((res: any) => {\n console.log(res);\n this.showSnackBar(this.getMessage('signUpOk'), ['snack-success']);\n resolve(this.getMessage('signUpOk'));\n }).catch((err) => {\n console.error(err);\n this.showSnackBar(this.getMessage('signUpNok'), ['snack-error']);\n reject(this.getMessage('signUpNok'));\n });\n }).catch((error) => {\n console.error('credentials.create ERROR', error);\n this.showSnackBar(this.getMessage('signUpNok'), ['snack-error']);\n reject(this.getMessage('signUpNok'));\n });\n }\n } else {\n this.showSnackBar(this.getMessage('browserNok'), ['snack-error']);\n reject(this.getMessage('browserNok'));\n }\n });\n return promise;\n }\n\n\n signIn(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n if (this.webAuthnAvailable) {\n const userData = this.sessionService.getUserdata();\n if (userData) {\n let user = {\n id: userData?.userId,\n email: userData?.email,\n credentials: [{}]\n };\n\n this.getAttributeUser(user.id, 'webauthn_key').subscribe({\n next: (res) => {\n console.log(res);\n if (res.data && res.data.webauthn_key && res.data.webauthn_key.length > 0) {\n\n const cred = {\n id: this.base64UrlToArrayBuffer(res.data.webauthn_key[0]),\n type: 'public-key'\n };\n user.credentials.splice(0,1);\n user.credentials.push([cred]);\n\n this.webAuthnSignin(user).then((response) => {\n console.log('SUCCESSFULLY GOT AN ASSERTION!', response);\n resolve('ok');\n })\n .catch((error) => {\n console.error('FAIL', error);\n this.showSnackBar(this.getMessage('invalidCredentials'), ['snack-error']);\n reject(this.getMessage('invalidCredentials'));\n });\n } else {\n this.showSnackBar(this.getMessage('noCredentials'), ['snack-error']);\n reject(this.getMessage('noCredentials'));\n }\n },\n error: (err) => {\n console.error(err);\n this.showSnackBar(this.getMessage('errorRetrievingCredentials'), ['snack-error']);\n reject(this.getMessage('errorRetrievingCredentials'));\n }\n });\n }\n } else {\n this.showSnackBar(this.getMessage('browserNok'), ['snack-error']);\n reject(this.getMessage('browserNok'));\n }\n });\n return promise;\n }\n\n\n addAttributeUser(userId: any, code: any, value: any): Observable<any> {\n return this.http.post<any>(this.environment.endPoint + `/user/attribute/value/${userId}/${code}/${value}`,{})\n .pipe(\n map(res => res));\n }\n\n getAttributeUser(userId: any, code: any): Observable<any> {\n return this.http.get<any>(this.environment.endPoint + `/user/attribute/value/${userId}/${code}`)\n .pipe(\n map(res => res));\n }\n\n showSnackBar(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n getMessage(code: string): string {\n let msg = '';\n const lang = window.localStorage.getItem('LANG');\n const messagesEn: any = {\n signUpOk: 'Credentials registered successfully',\n signUpNok: 'A problem occurred while registering credentials',\n browserNok: 'The browser does not support this functionality',\n noCredentials: 'The user has no stored credentials',\n invalidCredentials: 'The credentials are invalid',\n errorRetrievingCredentials: 'There was a problem retrieving credentials',\n };\n const messagesEs: any = {\n signUpOk: 'Credenciales registradas exitosamente',\n signUpNok: 'Se produjo un problema al registrar las credenciales',\n browserNok: 'El navegador no soporta esta funcionalidad',\n noCredentials: 'El usuario no tiene credenciales almacenadas',\n invalidCredentials: 'Las credenciales no son válidas',\n errorRetrievingCredentials: 'Se produjo un problema al recuperar las credenciales',\n };\n if (lang && lang==='en') {\n msg = messagesEn[code];\n } else {\n msg = messagesEs[code];\n }\n return msg;\n }\n\n}\n","/*\n * Public API Surface of ssi-security-commons\n */\n\nexport * from './lib/ssi-security-commons.service';\nexport * from './lib/ssi-security-commons.component';\nexport * from './lib/ssi-security-commons.module';\nexport * from './lib/services/auth-interceptor.service';\nexport * from './lib/services/session.service';\nexport * from './lib/services/messages.service';\nexport * from './lib/services/web-authn.service';\nexport * from './lib/user.model';\nexport * from './lib/services/crypto.service';\nexport * from './lib/services/jwt.service';\nexport * from './lib/shared/constants';\nexport * from './lib/services/user-event.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CryptoService","i3.JwtService","i2","i1.CryptoService","i4.SessionService","map"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class JwtService {
3
+ decodeTokenOld(token: string): any;
3
4
  decodeToken(token: string): any;
4
5
  static ɵfac: i0.ɵɵFactoryDeclaration<JwtService, never>;
5
6
  static ɵprov: i0.ɵɵInjectableDeclaration<JwtService>;
@@ -52,6 +52,7 @@ export declare class SessionService {
52
52
  checkSessionDataMicrofront(): Promise<any>;
53
53
  getAuthCode(): string;
54
54
  private getDecodedAuthCode;
55
+ refreshSession(): Promise<any>;
55
56
  static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
56
57
  static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
57
58
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ssi-security-commons",
3
- "version": "0.19.0",
3
+ "version": "0.19.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.1.6",
6
6
  "@angular/core": "^19.1.6",
@@ -21,6 +21,8 @@
21
21
  },
22
22
  ".": {
23
23
  "types": "./index.d.ts",
24
+ "esm2022": "./esm2022/ssi-security-commons.mjs",
25
+ "esm": "./esm2022/ssi-security-commons.mjs",
24
26
  "default": "./fesm2022/ssi-security-commons.mjs"
25
27
  }
26
28
  },