@igo2/auth 17.0.0-next.4 → 17.0.0-next.5
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.
- package/environment/environment.interface.d.ts +2 -2
- package/esm2022/environment/environment.interface.mjs +1 -1
- package/esm2022/form/auth-form.module.mjs +2 -24
- package/esm2022/form/public_api.mjs +1 -3
- package/esm2022/form/shared/index.mjs +1 -3
- package/esm2022/lib/auth.provider.mjs +22 -0
- package/esm2022/lib/shared/admin.guard.mjs +1 -1
- package/esm2022/lib/shared/auth-storage.interface.mjs +2 -0
- package/esm2022/lib/shared/auth-storage.service.mjs +100 -0
- package/esm2022/lib/shared/auth.guard.mjs +1 -1
- package/esm2022/lib/shared/auth.interceptor.mjs +1 -1
- package/esm2022/lib/shared/auth.interface.mjs +5 -2
- package/esm2022/lib/shared/auth.service.mjs +1 -1
- package/esm2022/lib/shared/index.mjs +12 -0
- package/esm2022/lib/shared/logged.guard.mjs +1 -1
- package/esm2022/lib/shared/profils.guard.mjs +1 -1
- package/esm2022/lib/shared/token.service.mjs +1 -1
- package/esm2022/microsoft/auth-microsoft.provider.mjs +43 -30
- package/esm2022/public_api.mjs +3 -10
- package/fesm2022/igo2-auth-form.mjs +9 -120
- package/fesm2022/igo2-auth-form.mjs.map +1 -1
- package/fesm2022/igo2-auth-microsoft.mjs +44 -31
- package/fesm2022/igo2-auth-microsoft.mjs.map +1 -1
- package/fesm2022/igo2-auth.mjs +225 -112
- package/fesm2022/igo2-auth.mjs.map +1 -1
- package/form/auth-form.module.d.ts +0 -2
- package/form/public_api.d.ts +0 -2
- package/form/shared/index.d.ts +0 -2
- package/lib/auth.provider.d.ts +3 -0
- package/{form → lib}/shared/auth-storage.service.d.ts +2 -1
- package/lib/shared/auth.interface.d.ts +8 -0
- package/lib/shared/index.d.ts +11 -0
- package/locale/en.auth.json +29 -29
- package/locale/fr.auth.json +33 -33
- package/microsoft/auth-microsoft.provider.d.ts +2 -23
- package/package.json +3 -3
- package/public_api.d.ts +2 -9
- package/esm2022/form/shared/auth-storage.interface.mjs +0 -2
- package/esm2022/form/shared/auth-storage.service.mjs +0 -98
- /package/{form → lib}/shared/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/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/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core/config';\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 } from '@igo2/core/config';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MessageService } from '@igo2/core/message';\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 { 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/config';\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/config';\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/config';\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/config';\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/config';\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","/*\n * Public API Surface of auth\n */\nexport * from './lib/shared/auth.service';\nexport * from './lib/shared/logged.guard';\nexport * from './lib/shared/auth.guard';\nexport * from './lib/shared/admin.guard';\nexport * from './lib/shared/profils.guard';\nexport * from './lib/shared/auth.interceptor';\nexport * from './lib/shared/auth.interface';\nexport * from './lib/shared/token.interface';\nexport * from './lib/shared/token.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.TokenService","i3","i6","i1.AuthService","i1"],"mappings":";;;;;;;;;;;;;;;;MAYa,YAAY,CAAA;AAIH,IAAA,QAAA,CAAA;AAHZ,IAAA,OAAO,CAAe;AACtB,IAAA,QAAQ,CAAS;AAEzB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;KACxC;AAED,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC5C;IAED,MAAM,GAAA;AACJ,QAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxC;IAED,GAAG,GAAA;QACD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5C;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;AACD,QAAA,OAAO,SAAS,CAAC,KAAK,CAAyB,CAAC;KACjD;IAED,SAAS,GAAA;AACP,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAChD,IAAI,GAAG,IAAI,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE;AAChC,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAO,IAAI,CAAC;KACb;uGArCU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCSY,WAAW,CAAA;AAkBZ,IAAA,IAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,eAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACY,IAAA,MAAA,CAAA;AAtBf,IAAA,aAAa,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC,CAAC;AACxD,IAAA,OAAO,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC,CAAC;AAClD,IAAA,WAAW,CAAS;IACpB,aAAa,GAAG,KAAK,CAAC;IACrB,SAAS,GAAG,KAAK,CAAC;AAClB,IAAA,WAAW,CAAc;AAEjC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,SAAS,CAAC;KAC5C;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,OAAO,YAAY,EAAE,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;KACtD;IAED,WACU,CAAA,IAAgB,EAChB,YAA0B,EAC1B,MAAqB,EACrB,eAAgC,EAChC,cAA8B,EAClB,MAAc,EAAA;QAL1B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAClB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAElC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;AAC7C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;IAED,KAAK,CAAC,QAAgB,EAAE,QAAgB,EAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEzE,QAAA,MAAM,IAAI,GAAG;YACX,QAAQ;AACR,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;SACxC,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACvC;AAED,IAAA,cAAc,CACZ,KAAa,EACb,IAAY,EACZ,SAAsB,EAAA;QAEtB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEzE,QAAA,MAAM,IAAI,GAAG;YACX,KAAK;AACL,YAAA,cAAc,EAAE,IAAI;YACpB,SAAS;SACV,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACvC;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;IAED,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,WAAW,EAAE,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAChE,GAAG,CAAC,CAAC,IAAS,KAAI;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,YAAA,MAAM,GAAG,CAAC;SACX,CAAC,CACH,CAAC;KACH;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;IAED,eAAe,GAAA;AACb,QAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;KACvC;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;KAChC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;SACnC;QACD,OAAO;KACR;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACR;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAExD,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,GAAG,CAAC;AACpD,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SACtC;aAAM,IAAI,WAAW,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;SACxC;KACF;IAED,WAAW,GAAA;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,GAAG,CAAC,CAAC;KACjC;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAA,QAAA,CAAU,CACnC,CAAC;KACH;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAO,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;KAC3D;AAEO,IAAA,cAAc,CAAC,QAAgB,EAAA;AACrC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAChC;;AAGD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC;KAC/C;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;KAC/B;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,QAAA,IAAI,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,SAAS,CAAC,IAAI,EAAE,OAAO,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAQ,MAAA,CAAA,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AACzD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAS,KAAI;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,YAAY,EAAE,IAAI,EAAE;gBACtB,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACnD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC5D;AACD,gBAAA,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;iBAC9D;aACF;AACD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,YAAA,MAAM,GAAG,CAAC;SACX,CAAC,CACH,CAAC;KACL;uGAhLU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAwBI,QAAQ;;;MC5BA,WAAW,CAAA;AAEZ,IAAA,WAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,MAAA,CAAA;AAHV,IAAA,WAAA,CACU,WAAwB,EACxB,MAAqB,EACrB,MAAc,EAAA;QAFd,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACnE,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAgB,CAAC;AAChE,QAAA,IAAI,UAAU,EAAE,UAAU,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAClD;AAED,QAAA,OAAO,KAAK,CAAC;KACd;uGApBU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,SAAS,CAAA;AAEV,IAAA,WAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,MAAA,CAAA;AAHV,IAAA,WAAA,CACU,WAAwB,EACxB,MAAqB,EACrB,MAAc,EAAA;QAFd,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACnE,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAgB,CAAC;AAChE,QAAA,IAAI,UAAU,EAAE,UAAU,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAClD;AAED,QAAA,OAAO,KAAK,CAAC;KACd;uGApBU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cAFR,MAAM,EAAA,CAAA,CAAA;;2FAEP,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,UAAU,CAAA;AAEX,IAAA,WAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,MAAA,CAAA;AAHV,IAAA,WAAA,CACU,WAAwB,EACxB,MAAqB,EACrB,MAAc,EAAA;QAFd,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACnE,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAgB,CAAC;AAChE,QAAA,IAAI,UAAU,EAAE,UAAU,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAClD;AAED,QAAA,OAAO,KAAK,CAAC;KACd;uGApBU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCGY,YAAY,CAAA;AAEb,IAAA,WAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,MAAA,CAAA;AAHV,IAAA,WAAA,CACU,WAAwB,EACxB,MAAqB,EACrB,MAAc,EAAA;QAFd,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACpB;IAEJ,WAAW,CAAC,MAA8B,EAAE,KAA0B,EAAA;AACpE,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,OAA8B,KAAI;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAgB,CAAC;AAChE,YAAA,IACE,OAAO;AACP,gBAAA,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACtE;AACA,gBAAA,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;AAEzC,YAAA,IAAI,UAAU,EAAE,UAAU,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;aAClD;AAED,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;KACH;uGA5BU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCQY,eAAe,CAAA;AAQhB,IAAA,MAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,IAAA,CAAA;AATF,IAAA,WAAW,CAAc;IACzB,iBAAiB,GAAG,KAAK,CAAC;AAC1B,IAAA,UAAU,CAAW;AACrB,IAAA,oBAAoB,CAA2B;AAC/C,IAAA,kBAAkB,CAAqB;AAE/C,IAAA,WAAA,CACU,MAAqB,EACrB,YAA0B,EAC1B,IAAgB,EAAA;QAFhB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAExB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAgB,CAAC;QAEhE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,oBAAoB,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;KAC9D;IAED,SAAS,CACP,WAA6B,EAC7B,IAAiB,EAAA;QAEjB,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACzE,QAAA,IAAI,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,WAAW,EAAE;AACf,YAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;AACd,gBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;AAC3D,aAAA,CAAC,CAAC;SACJ;QACD,IAAI,eAAe,EAAE;AACnB,YAAA,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC;gBACtB,eAAe;AAChB,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SAC7B;AAED,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;AAED,QAAA,MAAM,UAAU,GAAG,CAAU,OAAA,EAAA,KAAK,EAAE,CAAC;AACrC,QAAA,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC;AACtD,SAAA,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AAChD,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;AACvE,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAW,CAAC;AACnE,YAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3C,aAAA,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;AAC9C,YAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC7B;IAED,YAAY,CAAC,GAAG,EAAE,GAAW,EAAA;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,eAAe,EAAE;AACnB,YAAA,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;AACtC,YAAA,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,YAAA,OAAO,KAAK,CAAC;SACd;QACD,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,mBAAmB,CAAC,GAAW,EAAA;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,cAAc,GAAG,GAAG,CAAC;QACzB,IAAI,WAAW,EAAE;YACf,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnD,YAAA,IAAI,eAAe,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;AAC5C,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACjE,YAAA,YAAY,CAAC,IAAI,CAAC,CAAA,EAAG,WAAW,CAAC,GAAG,CAAA,CAAA,EAAI,WAAW,CAAC,KAAK,CAAA,CAAE,CAAC,CAAC;AAC7D,YAAA,IAAI,YAAY,CAAC,MAAM,EAAE;gBACvB,eAAe,IAAI,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACjD;AACD,YAAA,OAAO,eAAe,CAAC;SACxB;QACD,OAAO;KACR;AAEO,IAAA,0BAA0B,CAAC,MAAc,EAAA;QAC/C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,QAAA,KAAK,MAAM,mBAAmB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3D,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AACrE,YAAA,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC5B,eAAe;oBACb,mBAAmB,CAAC,eAAe,KAAK,SAAS;0BAC7C,mBAAmB,CAAC,eAAe;0BACnC,SAAS,CAAC;gBAChB,MAAM;aACP;SACF;AACD,QAAA,OAAO,eAAe,CAAC;KACxB;AAEO,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACzC,QAAA,IAAI,WAAW,CAAC;AAChB,QAAA,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACvD,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACnE,YAAA,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC5B,IAAI,OAAO,GAAG,CAAA,EAAG,iBAAiB,CAAC,WAAW,CAAA,CAAA,EAAI,iBAAiB,CAAC,QAAQ,CAAA,CAAE,CAAC;gBAC/E,IAAI,QAAQ,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1B,oBAAA,WAAW,GAAG;wBACZ,GAAG,EAAE,iBAAiB,CAAC,WAAW;wBAClC,KAAK,EAAE,iBAAiB,CAAC,QAAQ;qBAClC,CAAC;oBACF,MAAM;iBACP;aACF;SACF;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;IAED,YAAY,GAAA;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAEhD,IACE,CAAC,IAAI,CAAC,iBAAiB;YACvB,GAAG;YACH,WAAW,GAAG,GAAG,CAAC,GAAG;AACrB,YAAA,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,EAC5B;AACA,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAE9B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;AAClC,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA,QAAA,CAAU,EAAE,EAAE,CAAC,CAAC,SAAS,CACnD,CAAC,IAAS,KAAI;gBACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC,aAAC,EACD,CAAC,GAAG,KAAI;AACN,gBAAA,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,gBAAA,OAAO,GAAG,CAAC;AACb,aAAC,CACF,CAAC;SACH;KACF;uGApKU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACvBD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
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/shared/auth-storage.service.ts","../../../packages/auth/src/lib/shared/auth.interface.ts","../../../packages/auth/src/lib/shared/auth.interceptor.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/auth.provider.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { jwtDecode } from 'jwt-decode';\n\nimport { AuthOptions } from './auth.interface';\nimport { IgoJwtPayload } from './token.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService {\n private options?: AuthOptions;\n private tokenKey: string;\n\n constructor(private injector: Injector) {\n const config = this.injector.get<ConfigService>(ConfigService);\n this.options = config.getConfig('auth');\n this.tokenKey = this.options?.tokenKey;\n }\n\n set(token: string) {\n localStorage.setItem(this.tokenKey, token);\n }\n\n remove() {\n localStorage.removeItem(this.tokenKey);\n }\n\n get(): string {\n return localStorage.getItem(this.tokenKey);\n }\n\n decode(): IgoJwtPayload | null {\n const token = this.get();\n if (!token) {\n return;\n }\n return jwtDecode(token) satisfies IgoJwtPayload;\n }\n\n isExpired() {\n const jwt = this.decode();\n const currentTime = new Date().getTime() / 1000;\n if (jwt && currentTime < jwt.exp) {\n return false;\n }\n return true;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { Base64 } from '@igo2/utils';\n\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { globalCacheBusterNotifier } from 'ts-cacheable';\n\nimport { AuthOptions, IInfosUser, User } from './auth.interface';\nimport { IgoJwtPayload } from './token.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\n public logged$ = new BehaviorSubject<boolean>(undefined);\n public redirectUrl: string;\n public languageForce = false;\n private anonymous = false;\n private authOptions: AuthOptions;\n\n get hasAuthService() {\n return this.authOptions?.url !== undefined;\n }\n\n get user(): User | null {\n const decodedToken = this.decodeToken();\n return decodedToken?.user ? decodedToken.user : null;\n }\n\n constructor(\n private http: HttpClient,\n private tokenService: TokenService,\n private config: ConfigService,\n private languageService: LanguageService,\n private messageService: MessageService,\n @Optional() private router: Router\n ) {\n this.authOptions = this.config.getConfig('auth');\n this.authenticate$.next(this.authenticated);\n this.authenticate$.subscribe((authenticated) => {\n this.logged$.next(authenticated);\n globalCacheBusterNotifier.next();\n });\n }\n\n login(username: string, password: string): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n username,\n password: this.encodePassword(password)\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginWithToken(\n token: string,\n type: string,\n infosUser?: IInfosUser\n ): Observable<void> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n token,\n typeConnection: type,\n infosUser\n };\n\n return this.loginCall(body, myHeader);\n }\n\n loginAnonymous(): Observable<boolean> {\n this.anonymous = true;\n this.logged$.next(true);\n return of(true);\n }\n\n refresh(): Observable<void> {\n return this.http.post(`${this.authOptions?.url}/refresh`, {}).pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n\n logout(): Observable<boolean> {\n this.anonymous = false;\n this.tokenService.remove();\n this.authenticate$.next(false);\n return of(true);\n }\n\n isAuthenticated(): boolean {\n return !this.tokenService.isExpired();\n }\n\n getToken(): string {\n return this.tokenService.get();\n }\n\n decodeToken(): IgoJwtPayload | null {\n if (this.isAuthenticated()) {\n return this.tokenService.decode();\n }\n return;\n }\n\n goToRedirectUrl() {\n if (!this.router) {\n return;\n }\n const redirectUrl = this.redirectUrl || this.router.url;\n\n if (redirectUrl === this.authOptions.loginRoute) {\n const homeRoute = this.authOptions.homeRoute || '/';\n this.router.navigateByUrl(homeRoute);\n } else if (redirectUrl) {\n this.router.navigateByUrl(redirectUrl);\n }\n }\n\n getUserInfo(): Observable<User> {\n const url = this.authOptions?.url + '/info';\n return this.http.get<User>(url);\n }\n\n getProfils(): Observable<{ profils: string[] }> {\n return this.http.get<{ profils: string[] }>(\n `${this.authOptions?.url}/profils`\n );\n }\n\n updateUser(user: User): Observable<User> {\n return this.http.patch<User>(this.authOptions?.url, user);\n }\n\n private encodePassword(password: string) {\n return Base64.encode(password);\n }\n\n // authenticated or anonymous\n get logged(): boolean {\n return this.authenticated || this.isAnonymous;\n }\n\n get isAnonymous(): boolean {\n return this.anonymous;\n }\n\n get authenticated(): boolean {\n return this.isAuthenticated();\n }\n\n get isAdmin(): boolean {\n const token = this.decodeToken();\n if (token?.user?.isAdmin) {\n return true;\n }\n return false;\n }\n\n private loginCall(body, headers) {\n return this.http\n .post(`${this.authOptions?.url}/login`, body, { headers })\n .pipe(\n tap((data: any) => {\n this.tokenService.set(data.token);\n const tokenDecoded = this.decodeToken();\n if (tokenDecoded?.user) {\n if (tokenDecoded.user.locale && !this.languageForce) {\n this.languageService.setLanguage(tokenDecoded.user.locale);\n }\n if (tokenDecoded.user.isExpired) {\n this.messageService.alert('igo.auth.error.Password expired');\n }\n }\n this.authenticate$.next(true);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { BaseStorage, StorageScope } from '@igo2/core/storage';\n\nimport { AuthStorageOptions } from './auth-storage.interface';\nimport { AuthService } from './auth.service';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthStorageService extends BaseStorage<AuthStorageOptions> {\n constructor(\n config: ConfigService,\n private http: HttpClient,\n private authService: AuthService,\n private tokenService: TokenService\n ) {\n super(config);\n\n this.authService.authenticate$.subscribe((isAuthenticated) => {\n if (isAuthenticated && this.options.url) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n });\n }\n\n set(\n key: string,\n value: string | object | boolean | number,\n scope: StorageScope = StorageScope.LOCAL\n ) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = value;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.set(key, value, scope);\n }\n\n remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n const preference = {};\n preference[key] = undefined;\n this.http.patch(this.options.url, { preference }).subscribe();\n }\n super.remove(key, scope);\n }\n\n clear(scope: StorageScope = StorageScope.LOCAL) {\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http\n .patch(\n this.options.url,\n { preference: {} },\n {\n params: {\n mergePreference: 'false'\n }\n }\n )\n .subscribe();\n }\n\n let token: string;\n if (scope === StorageScope.LOCAL) {\n token = this.tokenService.get();\n }\n\n super.clear(scope);\n\n if (token) {\n this.tokenService.set(token);\n }\n\n if (\n scope === StorageScope.LOCAL &&\n this.authService.authenticated &&\n this.options.url\n ) {\n this.http\n .get(this.options.url)\n .subscribe((userIgo: { preference: object }) => {\n if (userIgo && userIgo.preference) {\n for (const key of Object.keys(userIgo.preference)) {\n const value = userIgo.preference[key];\n super.set(key, value);\n }\n }\n });\n }\n }\n}\n","import { Provider } from '@angular/core';\n\nimport { BaseUser } from '@igo2/core/user';\n\nexport interface User extends BaseUser {\n source?: string;\n sourceId?: string;\n locale?: string;\n isExpired?: boolean;\n isAdmin?: boolean;\n defaultContextId?: string;\n}\n\nexport interface IInfosUser {\n tokenId: string;\n}\n\nexport type AuthOptions = {\n url?: string;\n tokenKey?: string;\n allowAnonymous?: boolean;\n loginRoute?: string;\n logoutRoute?: string;\n homeRoute?: string;\n trustHosts?: string[];\n profilsGuard?: string[];\n hostsWithCredentials?: WithCredentialsOptions[];\n hostsByKey?: AuthByKeyOptions[];\n intern?: AuthInternOptions;\n};\n\nexport interface AuthByKeyOptions {\n domainRegFilters?: string;\n keyProperty?: string;\n keyValue?: string;\n}\nexport interface WithCredentialsOptions {\n withCredentials?: boolean;\n domainRegFilters?: string;\n}\n\nexport interface AuthInternOptions {\n enabled?: boolean;\n}\n\nexport interface AuthFeature<KindT extends AuthFeatureKind> {\n kind: KindT;\n providers: Provider[];\n}\n\nexport enum AuthFeatureKind {\n Microsoft = 0\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { Observable } from 'rxjs';\nimport { Md5 } from 'ts-md5';\n\nimport {\n AuthByKeyOptions,\n AuthOptions,\n WithCredentialsOptions\n} from './auth.interface';\nimport { TokenService } from './token.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthInterceptor implements HttpInterceptor {\n private authOptions: AuthOptions;\n private refreshInProgress = false;\n private trustHosts: string[];\n private hostsWithCredentials: WithCredentialsOptions[];\n private hostsWithAuthByKey: AuthByKeyOptions[];\n\n constructor(\n private config: ConfigService,\n private tokenService: TokenService,\n private http: HttpClient\n ) {\n this.authOptions = this.config.getConfig('auth') as AuthOptions;\n\n this.trustHosts = this.authOptions?.trustHosts || [];\n this.trustHosts.push(window.location.hostname);\n\n this.hostsWithCredentials = this.authOptions?.hostsWithCredentials || [];\n this.hostsWithAuthByKey = this.authOptions?.hostsByKey || [];\n }\n\n intercept(\n originalReq: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n const withCredentials = this.handleHostsWithCredentials(originalReq.url);\n let req = originalReq.clone();\n const hostWithKey = this.handleHostsAuthByKey(originalReq.url);\n if (hostWithKey) {\n req = req.clone({\n params: req.params.set(hostWithKey.key, hostWithKey.value)\n });\n }\n if (withCredentials) {\n req = originalReq.clone({\n withCredentials\n });\n return next.handle(req);\n }\n this.refreshToken();\n const token = this.tokenService.get();\n const element = document.createElement('a');\n element.href = req.url;\n if (element.host === '') {\n element.href = element.href; // FIX IE11, DO NOT REMOVE\n }\n\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return next.handle(req);\n }\n\n const authHeader = `Bearer ${token}`;\n let authReq = req.clone({\n headers: req.headers.set('Authorization', authHeader)\n });\n\n const tokenDecoded = this.tokenService.decode();\n if (authReq.params.get('_i') === 'true' && tokenDecoded?.user?.sourceId) {\n const hashUser = Md5.hashStr(tokenDecoded.user.sourceId) as string;\n authReq = authReq.clone({\n params: authReq.params.set('_i', hashUser)\n });\n } else if (authReq.params.get('_i') === 'true') {\n authReq = authReq.clone({\n params: authReq.params.delete('_i')\n });\n }\n\n return next.handle(authReq);\n }\n\n interceptXhr(xhr, url: string): boolean {\n const withCredentials = this.handleHostsWithCredentials(url);\n if (withCredentials) {\n xhr.withCredentials = withCredentials;\n return true;\n }\n\n this.refreshToken();\n const element = document.createElement('a');\n element.href = url;\n\n const token = this.tokenService.get();\n if (!token || this.trustHosts.indexOf(element.hostname) === -1) {\n return false;\n }\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\n return true;\n }\n\n alterUrlWithKeyAuth(url: string): string {\n const hostWithKey = this.handleHostsAuthByKey(url);\n let interceptedUrl = url;\n if (hostWithKey) {\n const urlDecomposed = interceptedUrl.split(/[?&]/);\n let urlWithKeyAdded = urlDecomposed.shift();\n const paramsToKeep = urlDecomposed.filter((p) => p.length !== 0);\n paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);\n if (paramsToKeep.length) {\n urlWithKeyAdded += '?' + paramsToKeep.join('&');\n }\n return urlWithKeyAdded;\n }\n return;\n }\n\n private handleHostsWithCredentials(reqUrl: string) {\n let withCredentials = false;\n for (const hostWithCredentials of this.hostsWithCredentials) {\n const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n withCredentials =\n hostWithCredentials.withCredentials !== undefined\n ? hostWithCredentials.withCredentials\n : undefined;\n break;\n }\n }\n return withCredentials;\n }\n\n private handleHostsAuthByKey(reqUrl: string): { key: string; value: string } {\n let hostWithKey;\n for (const hostWithAuthByKey of this.hostsWithAuthByKey) {\n const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);\n if (domainRegex.test(reqUrl)) {\n var replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;\n var keyAdded = new RegExp(replace, 'gm');\n if (!keyAdded.test(reqUrl)) {\n hostWithKey = {\n key: hostWithAuthByKey.keyProperty,\n value: hostWithAuthByKey.keyValue\n };\n break;\n }\n }\n }\n return hostWithKey;\n }\n\n refreshToken() {\n const jwt = this.tokenService.decode();\n const currentTime = new Date().getTime() / 1000;\n\n if (\n !this.refreshInProgress &&\n jwt &&\n currentTime < jwt.exp &&\n currentTime > jwt.exp - 1800\n ) {\n this.refreshInProgress = true;\n\n const url = this.authOptions?.url;\n return this.http.post(`${url}/refresh`, {}).subscribe(\n (data: any) => {\n this.tokenService.set(data.token);\n this.refreshInProgress = false;\n },\n (err) => {\n err.error.caught = true;\n return err;\n }\n );\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggedGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.logged) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.authenticated) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (this.authService.isAdmin) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { map } from 'rxjs/operators';\n\nimport { AuthOptions } from './auth.interface';\nimport { AuthService } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfilsGuard {\n constructor(\n private authService: AuthService,\n private config: ConfigService,\n private router: Router\n ) {}\n\n canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.authService.getProfils().pipe(\n map((profils: { profils: string[] }) => {\n const authConfig = this.config.getConfig('auth') as AuthOptions;\n if (\n profils &&\n profils.profils &&\n profils.profils.some((v) => authConfig.profilsGuard.indexOf(v) !== -1)\n ) {\n return true;\n }\n\n this.authService.redirectUrl = state.url;\n\n if (authConfig?.loginRoute) {\n this.router.navigateByUrl(authConfig.loginRoute);\n }\n\n return false;\n })\n );\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport {\n EnvironmentProviders,\n Provider,\n makeEnvironmentProviders\n} from '@angular/core';\n\nimport { StorageService } from '@igo2/core/storage';\n\nimport {\n AuthFeature,\n AuthFeatureKind,\n AuthInterceptor,\n AuthStorageService\n} from './shared';\n\nexport function provideAuthentification(\n ...features: AuthFeature<AuthFeatureKind>[]\n): EnvironmentProviders {\n const providers: Provider[] = [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n {\n provide: StorageService,\n useClass: AuthStorageService\n }\n ];\n\n for (const feature of features) {\n providers.push(...feature.providers);\n }\n\n return makeEnvironmentProviders(providers);\n}\n","/*\n * Public API Surface of auth\n */\nexport * from './lib/auth.provider';\nexport * from './lib/shared';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.TokenService","i3","i6","i1","i2","i3.AuthService","i4.TokenService","i1.AuthService"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
|
2
1
|
import * as i0 from "@angular/core";
|
|
3
2
|
import * as i1 from "@angular/common";
|
|
4
3
|
import * as i2 from "@angular/forms";
|
|
@@ -15,7 +14,6 @@ import * as i12 from "@igo2/auth/internal";
|
|
|
15
14
|
import * as i13 from "@igo2/auth/facebook";
|
|
16
15
|
import * as i14 from "@igo2/auth/microsoft";
|
|
17
16
|
export declare class IgoAuthFormModule {
|
|
18
|
-
static forRoot(): ModuleWithProviders<IgoAuthFormModule>;
|
|
19
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<IgoAuthFormModule, never>;
|
|
20
18
|
static ɵmod: i0.ɵɵNgModuleDeclaration<IgoAuthFormModule, never, [typeof i1.CommonModule, typeof i2.ReactiveFormsModule, typeof i3.MatFormFieldModule, typeof i4.MatInputModule, typeof i5.MatIconModule, typeof i6.MatProgressSpinnerModule, typeof i7.MatButtonModule, typeof i8.IgoLanguageModule, typeof i9.MsalModule, typeof i10.AuthFormComponent, typeof i11.AuthGoogleComponent, typeof i12.AuthInternComponent, typeof i13.AuthFacebookComponent, typeof i14.AuthMicrosoftComponent, typeof i14.AuthMicrosoftb2cComponent], [typeof i10.AuthFormComponent]>;
|
|
21
19
|
static ɵinj: i0.ɵɵInjectorDeclaration<IgoAuthFormModule>;
|
package/form/public_api.d.ts
CHANGED
package/form/shared/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { AuthService, TokenService } from '@igo2/auth';
|
|
3
2
|
import { ConfigService } from '@igo2/core/config';
|
|
4
3
|
import { BaseStorage, StorageScope } from '@igo2/core/storage';
|
|
5
4
|
import { AuthStorageOptions } from './auth-storage.interface';
|
|
5
|
+
import { AuthService } from './auth.service';
|
|
6
|
+
import { TokenService } from './token.service';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export declare class AuthStorageService extends BaseStorage<AuthStorageOptions> {
|
|
8
9
|
private http;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Provider } from '@angular/core';
|
|
1
2
|
import { BaseUser } from '@igo2/core/user';
|
|
2
3
|
export interface User extends BaseUser {
|
|
3
4
|
source?: string;
|
|
@@ -35,3 +36,10 @@ export interface WithCredentialsOptions {
|
|
|
35
36
|
export interface AuthInternOptions {
|
|
36
37
|
enabled?: boolean;
|
|
37
38
|
}
|
|
39
|
+
export interface AuthFeature<KindT extends AuthFeatureKind> {
|
|
40
|
+
kind: KindT;
|
|
41
|
+
providers: Provider[];
|
|
42
|
+
}
|
|
43
|
+
export declare enum AuthFeatureKind {
|
|
44
|
+
Microsoft = 0
|
|
45
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './token.service';
|
|
2
|
+
export * from './token.interface';
|
|
3
|
+
export * from './auth.service';
|
|
4
|
+
export * from './auth-storage.service';
|
|
5
|
+
export * from './auth-storage.interface';
|
|
6
|
+
export * from './auth.interface';
|
|
7
|
+
export * from './auth.interceptor';
|
|
8
|
+
export * from './logged.guard';
|
|
9
|
+
export * from './auth.guard';
|
|
10
|
+
export * from './admin.guard';
|
|
11
|
+
export * from './profils.guard';
|
package/locale/en.auth.json
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
{
|
|
2
|
-
"igo": {
|
|
3
|
-
"auth": {
|
|
4
|
-
"accessAnonymous": "Public access",
|
|
5
|
-
"connection": "Connection",
|
|
6
|
-
"login": "Login",
|
|
7
|
-
"password": "Password",
|
|
8
|
-
"signOut": "Sign out",
|
|
9
|
-
"user": "User",
|
|
10
|
-
"welcome": "Welcome {{name}}!",
|
|
11
|
-
"deconnection": "You are logged out.",
|
|
12
|
-
"home": "Return to the home page",
|
|
13
|
-
"error": {
|
|
14
|
-
"Password expired": "Password expired",
|
|
15
|
-
"Maximun logins exceeded": "Maximum logins exceeded",
|
|
16
|
-
"Login lockout": "Maximum number of attempts exceeded. Your account is locked.",
|
|
17
|
-
"Wrong password": "Wrong password",
|
|
18
|
-
"Invalid username": "Invalid username",
|
|
19
|
-
"Username or password invalid": "Username or password invalid"
|
|
20
|
-
},
|
|
21
|
-
"microsoft": {
|
|
22
|
-
"login": "Sign in with Azure account"
|
|
23
|
-
},
|
|
24
|
-
"microsoftb2c": {
|
|
25
|
-
"login": "Sign in"
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"igo": {
|
|
3
|
+
"auth": {
|
|
4
|
+
"accessAnonymous": "Public access",
|
|
5
|
+
"connection": "Connection",
|
|
6
|
+
"login": "Login",
|
|
7
|
+
"password": "Password",
|
|
8
|
+
"signOut": "Sign out",
|
|
9
|
+
"user": "User",
|
|
10
|
+
"welcome": "Welcome {{name}}!",
|
|
11
|
+
"deconnection": "You are logged out.",
|
|
12
|
+
"home": "Return to the home page",
|
|
13
|
+
"error": {
|
|
14
|
+
"Password expired": "Password expired",
|
|
15
|
+
"Maximun logins exceeded": "Maximum logins exceeded",
|
|
16
|
+
"Login lockout": "Maximum number of attempts exceeded. Your account is locked.",
|
|
17
|
+
"Wrong password": "Wrong password",
|
|
18
|
+
"Invalid username": "Invalid username",
|
|
19
|
+
"Username or password invalid": "Username or password invalid"
|
|
20
|
+
},
|
|
21
|
+
"microsoft": {
|
|
22
|
+
"login": "Sign in with Azure account"
|
|
23
|
+
},
|
|
24
|
+
"microsoftb2c": {
|
|
25
|
+
"login": "Sign in"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
package/locale/fr.auth.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
{
|
|
2
|
-
"igo": {
|
|
3
|
-
"auth": {
|
|
4
|
-
"accessAnonymous": "Accès public",
|
|
5
|
-
"connection": "Connexion",
|
|
6
|
-
"login": "Se connecter",
|
|
7
|
-
"password": "Mot de passe",
|
|
8
|
-
"signOut": "Se déconnecter",
|
|
9
|
-
"user": "Utilisateur",
|
|
10
|
-
"welcome": "Bienvenue {{name}}!",
|
|
11
|
-
"deconnection": "Vous êtes déconnecté",
|
|
12
|
-
"home": "Retourner à la page d'accueil",
|
|
13
|
-
"error": {
|
|
14
|
-
"Password expired": "Votre mot de passe est expiré",
|
|
15
|
-
"Maximun logins exceeded": "Nombre maximal de connexions dépassé",
|
|
16
|
-
"Login lockout": "Nombre maximal d'essais dépassés. Votre compte est verrouillé.",
|
|
17
|
-
"Wrong password": "Mot de passe incorrect",
|
|
18
|
-
"Invalid username": "Utilisateur invalide",
|
|
19
|
-
"Username or password invalid": "Utilisateur ou mot de passe invalide"
|
|
20
|
-
},
|
|
21
|
-
"google": {
|
|
22
|
-
"login": "Se connecter avec Google",
|
|
23
|
-
"logged": "Connecté avec Google"
|
|
24
|
-
},
|
|
25
|
-
"microsoft": {
|
|
26
|
-
"login": "Se connecter avec compte Azure"
|
|
27
|
-
},
|
|
28
|
-
"microsoftb2c": {
|
|
29
|
-
"login": "Se connecter"
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"igo": {
|
|
3
|
+
"auth": {
|
|
4
|
+
"accessAnonymous": "Accès public",
|
|
5
|
+
"connection": "Connexion",
|
|
6
|
+
"login": "Se connecter",
|
|
7
|
+
"password": "Mot de passe",
|
|
8
|
+
"signOut": "Se déconnecter",
|
|
9
|
+
"user": "Utilisateur",
|
|
10
|
+
"welcome": "Bienvenue {{name}}!",
|
|
11
|
+
"deconnection": "Vous êtes déconnecté",
|
|
12
|
+
"home": "Retourner à la page d'accueil",
|
|
13
|
+
"error": {
|
|
14
|
+
"Password expired": "Votre mot de passe est expiré",
|
|
15
|
+
"Maximun logins exceeded": "Nombre maximal de connexions dépassé",
|
|
16
|
+
"Login lockout": "Nombre maximal d'essais dépassés. Votre compte est verrouillé.",
|
|
17
|
+
"Wrong password": "Mot de passe incorrect",
|
|
18
|
+
"Invalid username": "Utilisateur invalide",
|
|
19
|
+
"Username or password invalid": "Utilisateur ou mot de passe invalide"
|
|
20
|
+
},
|
|
21
|
+
"google": {
|
|
22
|
+
"login": "Se connecter avec Google",
|
|
23
|
+
"logged": "Connecté avec Google"
|
|
24
|
+
},
|
|
25
|
+
"microsoft": {
|
|
26
|
+
"login": "Se connecter avec compte Azure"
|
|
27
|
+
},
|
|
28
|
+
"microsoftb2c": {
|
|
29
|
+
"login": "Se connecter"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1,33 +1,12 @@
|
|
|
1
|
+
import { AuthFeature, AuthFeatureKind } from '@igo2/auth';
|
|
1
2
|
import { ConfigService } from '@igo2/core/config';
|
|
2
|
-
import { MsalService } from '@azure/msal-angular';
|
|
3
3
|
import { PublicClientApplication } from '@azure/msal-browser';
|
|
4
4
|
import { AuthMicrosoftComponent } from './auth-microsoft/auth-microsoft.component';
|
|
5
5
|
import { AuthMicrosoftb2cComponent } from './auth-microsoftb2c/auth-microsoftb2c.component';
|
|
6
|
-
import { MsalServiceb2c } from './auth-microsoftb2c/auth-msalServiceb2c.service';
|
|
7
6
|
import { MSPMsalGuardConfiguration } from './shared/auth-microsoft.interface';
|
|
8
7
|
export declare const AUTH_MICROSOFT_DIRECTIVES: readonly [typeof AuthMicrosoftComponent, typeof AuthMicrosoftb2cComponent];
|
|
9
8
|
export declare function MSALConfigFactory(config: ConfigService): PublicClientApplication;
|
|
10
9
|
export declare function MSALConfigFactoryb2c(config: ConfigService): PublicClientApplication;
|
|
11
10
|
export declare function MSALAngularConfigFactory(config: ConfigService): MSPMsalGuardConfiguration;
|
|
12
11
|
export declare function MSALAngularConfigFactoryb2c(config: ConfigService): MSPMsalGuardConfiguration;
|
|
13
|
-
export declare function
|
|
14
|
-
provide: import("@angular/core").InjectionToken<string>;
|
|
15
|
-
useFactory: typeof MSALConfigFactoryb2c;
|
|
16
|
-
deps: (typeof ConfigService)[];
|
|
17
|
-
multi?: undefined;
|
|
18
|
-
} | {
|
|
19
|
-
provide: import("@angular/core").InjectionToken<string>;
|
|
20
|
-
useFactory: typeof MSALAngularConfigFactoryb2c;
|
|
21
|
-
deps: (typeof ConfigService)[];
|
|
22
|
-
multi: boolean;
|
|
23
|
-
})[] | (typeof MsalService | {
|
|
24
|
-
provide: import("@angular/core").InjectionToken<string>;
|
|
25
|
-
useFactory: typeof MSALConfigFactory;
|
|
26
|
-
deps: (typeof ConfigService)[];
|
|
27
|
-
multi?: undefined;
|
|
28
|
-
} | {
|
|
29
|
-
provide: import("@angular/core").InjectionToken<string>;
|
|
30
|
-
useFactory: typeof MSALAngularConfigFactory;
|
|
31
|
-
deps: (typeof ConfigService)[];
|
|
32
|
-
multi: boolean;
|
|
33
|
-
})[];
|
|
12
|
+
export declare function withMicrosoftSupport(type?: string): AuthFeature<AuthFeatureKind.Microsoft>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@igo2/auth",
|
|
3
|
-
"version": "17.0.0-next.
|
|
3
|
+
"version": "17.0.0-next.5",
|
|
4
4
|
"description": "IGO Library",
|
|
5
5
|
"author": "IGO Community",
|
|
6
6
|
"keywords": [
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
"@angular/router": "^17.0.6",
|
|
84
84
|
"@azure/msal-angular": "^3.0.4",
|
|
85
85
|
"@azure/msal-browser": "^3.0.4",
|
|
86
|
-
"@igo2/core": "^17.0.0-next.
|
|
87
|
-
"@igo2/utils": "^17.0.0-next.
|
|
86
|
+
"@igo2/core": "^17.0.0-next.5",
|
|
87
|
+
"@igo2/utils": "^17.0.0-next.5",
|
|
88
88
|
"rxjs": "^7.8.0"
|
|
89
89
|
},
|
|
90
90
|
"engines": {
|
package/public_api.d.ts
CHANGED
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
export * from './lib/
|
|
2
|
-
export * from './lib/shared
|
|
3
|
-
export * from './lib/shared/auth.guard';
|
|
4
|
-
export * from './lib/shared/admin.guard';
|
|
5
|
-
export * from './lib/shared/profils.guard';
|
|
6
|
-
export * from './lib/shared/auth.interceptor';
|
|
7
|
-
export * from './lib/shared/auth.interface';
|
|
8
|
-
export * from './lib/shared/token.interface';
|
|
9
|
-
export * from './lib/shared/token.service';
|
|
1
|
+
export * from './lib/auth.provider';
|
|
2
|
+
export * from './lib/shared';
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zdG9yYWdlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvZm9ybS9zcmMvc2hhcmVkL2F1dGgtc3RvcmFnZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VPcHRpb25zIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoU3RvcmFnZU9wdGlvbnMgZXh0ZW5kcyBTdG9yYWdlT3B0aW9ucyB7XG4gIHVybDogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { AuthService, TokenService } from '@igo2/auth';
|
|
4
|
-
import { ConfigService } from '@igo2/core/config';
|
|
5
|
-
import { BaseStorage, StorageScope } from '@igo2/core/storage';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@igo2/core/config";
|
|
8
|
-
import * as i2 from "@angular/common/http";
|
|
9
|
-
import * as i3 from "@igo2/auth";
|
|
10
|
-
export class AuthStorageService extends BaseStorage {
|
|
11
|
-
http;
|
|
12
|
-
authService;
|
|
13
|
-
tokenService;
|
|
14
|
-
constructor(config, http, authService, tokenService) {
|
|
15
|
-
super(config);
|
|
16
|
-
this.http = http;
|
|
17
|
-
this.authService = authService;
|
|
18
|
-
this.tokenService = tokenService;
|
|
19
|
-
this.authService.authenticate$.subscribe((isAuthenticated) => {
|
|
20
|
-
if (isAuthenticated && this.options.url) {
|
|
21
|
-
this.http
|
|
22
|
-
.get(this.options.url)
|
|
23
|
-
.subscribe((userIgo) => {
|
|
24
|
-
if (userIgo && userIgo.preference) {
|
|
25
|
-
for (const key of Object.keys(userIgo.preference)) {
|
|
26
|
-
const value = userIgo.preference[key];
|
|
27
|
-
super.set(key, value);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
set(key, value, scope = StorageScope.LOCAL) {
|
|
35
|
-
if (scope === StorageScope.LOCAL &&
|
|
36
|
-
this.authService.authenticated &&
|
|
37
|
-
this.options.url) {
|
|
38
|
-
const preference = {};
|
|
39
|
-
preference[key] = value;
|
|
40
|
-
this.http.patch(this.options.url, { preference }).subscribe();
|
|
41
|
-
}
|
|
42
|
-
super.set(key, value, scope);
|
|
43
|
-
}
|
|
44
|
-
remove(key, scope = StorageScope.LOCAL) {
|
|
45
|
-
if (scope === StorageScope.LOCAL &&
|
|
46
|
-
this.authService.authenticated &&
|
|
47
|
-
this.options.url) {
|
|
48
|
-
const preference = {};
|
|
49
|
-
preference[key] = undefined;
|
|
50
|
-
this.http.patch(this.options.url, { preference }).subscribe();
|
|
51
|
-
}
|
|
52
|
-
super.remove(key, scope);
|
|
53
|
-
}
|
|
54
|
-
clear(scope = StorageScope.LOCAL) {
|
|
55
|
-
if (scope === StorageScope.LOCAL &&
|
|
56
|
-
this.authService.authenticated &&
|
|
57
|
-
this.options.url) {
|
|
58
|
-
this.http
|
|
59
|
-
.patch(this.options.url, { preference: {} }, {
|
|
60
|
-
params: {
|
|
61
|
-
mergePreference: 'false'
|
|
62
|
-
}
|
|
63
|
-
})
|
|
64
|
-
.subscribe();
|
|
65
|
-
}
|
|
66
|
-
let token;
|
|
67
|
-
if (scope === StorageScope.LOCAL) {
|
|
68
|
-
token = this.tokenService.get();
|
|
69
|
-
}
|
|
70
|
-
super.clear(scope);
|
|
71
|
-
if (token) {
|
|
72
|
-
this.tokenService.set(token);
|
|
73
|
-
}
|
|
74
|
-
if (scope === StorageScope.LOCAL &&
|
|
75
|
-
this.authService.authenticated &&
|
|
76
|
-
this.options.url) {
|
|
77
|
-
this.http
|
|
78
|
-
.get(this.options.url)
|
|
79
|
-
.subscribe((userIgo) => {
|
|
80
|
-
if (userIgo && userIgo.preference) {
|
|
81
|
-
for (const key of Object.keys(userIgo.preference)) {
|
|
82
|
-
const value = userIgo.preference[key];
|
|
83
|
-
super.set(key, value);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthStorageService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }, { token: i3.AuthService }, { token: i3.TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
90
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthStorageService, providedIn: 'root' });
|
|
91
|
-
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthStorageService, decorators: [{
|
|
93
|
-
type: Injectable,
|
|
94
|
-
args: [{
|
|
95
|
-
providedIn: 'root'
|
|
96
|
-
}]
|
|
97
|
-
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.HttpClient }, { type: i3.AuthService }, { type: i3.TokenService }] });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL2Zvcm0vc3JjL3NoYXJlZC9hdXRoLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFPL0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQStCO0lBRzNEO0lBQ0E7SUFDQTtJQUpWLFlBQ0UsTUFBcUIsRUFDYixJQUFnQixFQUNoQixXQUF3QixFQUN4QixZQUEwQjtRQUVsQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFKTixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSWxDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzNELElBQUksZUFBZSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJO3FCQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztxQkFDckIsU0FBUyxDQUFDLENBQUMsT0FBK0IsRUFBRSxFQUFFO29CQUM3QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQ2xDLEtBQUss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aUJBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2lCQUNyQixTQUFTLENBQUMsQ0FBQyxPQUErQixFQUFFLEVBQUU7Z0JBQzdDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO3dCQUNsRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUN0QyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDeEIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQzt1R0FyR1Usa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBUb2tlblNlcnZpY2UgfSBmcm9tICdAaWdvMi9hdXRoJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBCYXNlU3RvcmFnZSwgU3RvcmFnZVNjb3BlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcblxuaW1wb3J0IHsgQXV0aFN0b3JhZ2VPcHRpb25zIH0gZnJvbSAnLi9hdXRoLXN0b3JhZ2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFN0b3JhZ2VTZXJ2aWNlIGV4dGVuZHMgQmFzZVN0b3JhZ2U8QXV0aFN0b3JhZ2VPcHRpb25zPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjb25maWcpO1xuXG4gICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGUkLnN1YnNjcmliZSgoaXNBdXRoZW50aWNhdGVkKSA9PiB7XG4gICAgICBpZiAoaXNBdXRoZW50aWNhdGVkICYmIHRoaXMub3B0aW9ucy51cmwpIHtcbiAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgLmdldCh0aGlzLm9wdGlvbnMudXJsKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHVzZXJJZ286IHsgcHJlZmVyZW5jZTogb2JqZWN0IH0pID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VySWdvICYmIHVzZXJJZ28ucHJlZmVyZW5jZSkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh1c2VySWdvLnByZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB1c2VySWdvLnByZWZlcmVuY2Vba2V5XTtcbiAgICAgICAgICAgICAgICBzdXBlci5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgb2JqZWN0IHwgYm9vbGVhbiB8IG51bWJlcixcbiAgICBzY29wZTogU3RvcmFnZVNjb3BlID0gU3RvcmFnZVNjb3BlLkxPQ0FMXG4gICkge1xuICAgIGlmIChcbiAgICAgIHNjb3BlID09PSBTdG9yYWdlU2NvcGUuTE9DQUwgJiZcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCAmJlxuICAgICAgdGhpcy5vcHRpb25zLnVybFxuICAgICkge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZSA9IHt9O1xuICAgICAgcHJlZmVyZW5jZVtrZXldID0gdmFsdWU7XG4gICAgICB0aGlzLmh0dHAucGF0Y2godGhpcy5vcHRpb25zLnVybCwgeyBwcmVmZXJlbmNlIH0pLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBzdXBlci5zZXQoa2V5LCB2YWx1ZSwgc2NvcGUpO1xuICB9XG5cbiAgcmVtb3ZlKGtleTogc3RyaW5nLCBzY29wZTogU3RvcmFnZVNjb3BlID0gU3RvcmFnZVNjb3BlLkxPQ0FMKSB7XG4gICAgaWYgKFxuICAgICAgc2NvcGUgPT09IFN0b3JhZ2VTY29wZS5MT0NBTCAmJlxuICAgICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkICYmXG4gICAgICB0aGlzLm9wdGlvbnMudXJsXG4gICAgKSB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlID0ge307XG4gICAgICBwcmVmZXJlbmNlW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmh0dHAucGF0Y2godGhpcy5vcHRpb25zLnVybCwgeyBwcmVmZXJlbmNlIH0pLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBzdXBlci5yZW1vdmUoa2V5LCBzY29wZSk7XG4gIH1cblxuICBjbGVhcihzY29wZTogU3RvcmFnZVNjb3BlID0gU3RvcmFnZVNjb3BlLkxPQ0FMKSB7XG4gICAgaWYgKFxuICAgICAgc2NvcGUgPT09IFN0b3JhZ2VTY29wZS5MT0NBTCAmJlxuICAgICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkICYmXG4gICAgICB0aGlzLm9wdGlvbnMudXJsXG4gICAgKSB7XG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLnBhdGNoKFxuICAgICAgICAgIHRoaXMub3B0aW9ucy51cmwsXG4gICAgICAgICAgeyBwcmVmZXJlbmNlOiB7fSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICBtZXJnZVByZWZlcmVuY2U6ICdmYWxzZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGxldCB0b2tlbjogc3RyaW5nO1xuICAgIGlmIChzY29wZSA9PT0gU3RvcmFnZVNjb3BlLkxPQ0FMKSB7XG4gICAgICB0b2tlbiA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpO1xuICAgIH1cblxuICAgIHN1cGVyLmNsZWFyKHNjb3BlKTtcblxuICAgIGlmICh0b2tlbikge1xuICAgICAgdGhpcy50b2tlblNlcnZpY2Uuc2V0KHRva2VuKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzY29wZSA9PT0gU3RvcmFnZVNjb3BlLkxPQ0FMICYmXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQgJiZcbiAgICAgIHRoaXMub3B0aW9ucy51cmxcbiAgICApIHtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0KHRoaXMub3B0aW9ucy51cmwpXG4gICAgICAgIC5zdWJzY3JpYmUoKHVzZXJJZ286IHsgcHJlZmVyZW5jZTogb2JqZWN0IH0pID0+IHtcbiAgICAgICAgICBpZiAodXNlcklnbyAmJiB1c2VySWdvLnByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHVzZXJJZ28ucHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB1c2VySWdvLnByZWZlcmVuY2Vba2V5XTtcbiAgICAgICAgICAgICAgc3VwZXIuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
File without changes
|