@igo2/auth 20.1.0-next.9 → 21.0.0-next.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.
- package/fesm2022/igo2-auth-facebook.mjs +4 -4
- package/fesm2022/igo2-auth-facebook.mjs.map +1 -1
- package/fesm2022/igo2-auth-form.mjs +16 -17
- package/fesm2022/igo2-auth-form.mjs.map +1 -1
- package/fesm2022/igo2-auth-google.mjs +4 -4
- package/fesm2022/igo2-auth-google.mjs.map +1 -1
- package/fesm2022/igo2-auth-internal.mjs +3 -3
- package/fesm2022/igo2-auth-internal.mjs.map +1 -1
- package/fesm2022/igo2-auth-microsoft.mjs +137 -89
- package/fesm2022/igo2-auth-microsoft.mjs.map +1 -1
- package/fesm2022/igo2-auth-monitoring.mjs +3 -3
- package/fesm2022/igo2-auth.mjs +251 -148
- package/fesm2022/igo2-auth.mjs.map +1 -1
- package/locale/en.auth.json +4 -3
- package/locale/fr.auth.json +4 -3
- package/package.json +24 -23
- package/{form/index.d.ts → types/igo2-auth-form.d.ts} +1 -1
- package/{internal/index.d.ts → types/igo2-auth-internal.d.ts} +1 -1
- package/{microsoft/index.d.ts → types/igo2-auth-microsoft.d.ts} +39 -24
- package/{index.d.ts → types/igo2-auth.d.ts} +155 -84
- /package/{environment/index.d.ts → types/igo2-auth-environment.d.ts} +0 -0
- /package/{facebook/index.d.ts → types/igo2-auth-facebook.d.ts} +0 -0
- /package/{google/index.d.ts → types/igo2-auth-google.d.ts} +0 -0
- /package/{monitoring/index.d.ts → types/igo2-auth-monitoring.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/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, inject } 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 injector = inject(Injector);\n\n private options?: AuthOptions;\n private tokenKey: string;\n\n constructor() {\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, inject } 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 private http = inject(HttpClient);\n private tokenService = inject(TokenService);\n private config = inject(ConfigService);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private router = inject(Router, { optional: true });\n\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 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, inject } 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 private http = inject(HttpClient);\n private authService = inject(AuthService);\n private tokenService = inject(TokenService);\n\n constructor() {\n const config = inject(ConfigService);\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 interface 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, inject } 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 config = inject(ConfigService);\n private tokenService = inject(TokenService);\n private http = inject(HttpClient);\n\n private authOptions: AuthOptions;\n private refreshInProgress = false;\n private trustHosts: string[];\n private hostsWithCredentials: WithCredentialsOptions[];\n private hostsWithAuthByKey: AuthByKeyOptions[];\n\n constructor() {\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\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 const 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 const replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;\n const 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, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-auth.mjs","sources":["../../../packages/auth/src/lib/shared/token.service.ts","../../../packages/auth/src/lib/shared/user/user.service.ts","../../../packages/auth/src/lib/shared/auth.service.ts","../../../packages/auth/src/lib/shared/admin.guard.ts","../../../packages/auth/src/lib/shared/auth-storage.service.ts","../../../packages/auth/src/lib/shared/auth.guard.ts","../../../packages/auth/src/lib/shared/auth.interceptor.ts","../../../packages/auth/src/lib/shared/auth.interface.ts","../../../packages/auth/src/lib/shared/logged.guard.ts","../../../packages/auth/src/lib/shared/profils.guard.ts","../../../packages/auth/src/lib/shared/user/user.provider.ts","../../../packages/auth/src/lib/auth.provider.ts","../../../packages/auth/src/public_api.ts","../../../packages/auth/src/igo2-auth.ts"],"sourcesContent":["import { Injectable, Injector, inject } 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 injector = inject(Injector);\n\n private options?: AuthOptions;\n private tokenKey: string;\n\n constructor() {\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 } from '@angular/common/http';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\n\nimport { BehaviorSubject, Observable, tap } from 'rxjs';\n\nimport { IAuthUserIgoOptions } from '../auth.interface';\nimport { IUser, IUserPreference } from './user.interface';\n\nexport const USER_AUTH_OPTIONS = new InjectionToken<IAuthUserIgoOptions>(\n 'USER_AUTH_OPTIONS'\n);\n\n@Injectable()\nexport class UserService {\n private http = inject(HttpClient);\n private options = inject(USER_AUTH_OPTIONS);\n\n private baseUrl: string;\n\n private _user$ = new BehaviorSubject<IUser>(undefined);\n user$ = this._user$.asObservable();\n\n constructor() {\n this.baseUrl = this.options.apiUrl;\n }\n\n getUser(): Observable<IUser> {\n return this.http\n .get<IUser>(this.baseUrl)\n .pipe(tap((user) => this._user$.next(user)));\n }\n\n sync(): Observable<IUser> {\n return this.http\n .get<IUser>(`${this.baseUrl}/sync`)\n .pipe(tap((user) => this._user$.next(user)));\n }\n\n updatePreference(preference: IUserPreference) {\n return this.http.patch<{ id: number }>(this.baseUrl, { preference });\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject, signal } 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, finalize, switchMap, 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';\nimport { IUser } from './user/user.interface';\nimport { UserService } from './user/user.service';\n\ninterface IToken {\n token: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService<T extends AuthOptions = AuthOptions> {\n private http = inject(HttpClient);\n private tokenService = inject(TokenService);\n private userService = inject(UserService, {\n optional: true\n });\n private config = inject(ConfigService);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private router = inject(Router, { optional: true });\n\n public authenticate$ = new BehaviorSubject<boolean>(undefined);\n public logged$ = new BehaviorSubject<boolean>(undefined);\n public redirectUrl: string;\n public languageForce = false;\n public authOptions: T;\n\n private anonymous = false;\n\n isLogging = signal(false);\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 this.authOptions = this.config.getConfig('auth');\n\n this.initializeAuthentication(this.authenticated).subscribe();\n\n this.authenticate$.subscribe((authenticated) => {\n this.logged$.next(authenticated);\n globalCacheBusterNotifier.next();\n });\n }\n\n login(username: string, password: string): Observable<IUser> {\n this.isLogging.set(true);\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).pipe(\n finalize(() => this.isLogging.set(false))\n );\n }\n\n loginWithToken(\n token: string,\n type: string,\n infosUser?: IInfosUser,\n applicationId?: string\n ): Observable<IUser> {\n const myHeader = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n const body = {\n token,\n typeConnection: type,\n infosUser,\n applicationId\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<IToken> {\n return this.http.post(`${this.authOptions?.url}/refresh`, {}).pipe(\n tap((data: IToken) => {\n this.tokenService.set(data.token);\n }),\n catchError((err) => {\n err.error.caught = true;\n throw err;\n })\n );\n }\n\n logout(): void {\n this.logoutInternal();\n if (this.authOptions.logoutRedirectRoute) {\n this.router.navigate([this.authOptions.logoutRedirectRoute]);\n }\n }\n\n private logoutInternal(): void {\n this.anonymous = false;\n this.tokenService.remove();\n this.authenticate$.next(false);\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.authOptions.homeRoute ?? '/';\n\n this.router.navigateByUrl(redirectUrl);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n translateError(prefix: string, error: any): Observable<string> {\n return new Observable((observer) => {\n try {\n this.languageService.translate\n .get(prefix + error.error.message)\n .subscribe((errorMsg) => {\n observer.next(errorMsg);\n observer.complete();\n });\n } catch {\n if (error.error) observer.next(error.error.message);\n observer.complete();\n }\n });\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 protected loginCall(body, headers) {\n return this.http\n .post<IToken>(`${this.authOptions?.url}/login`, body, { headers })\n .pipe(\n tap((data) => {\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(\n 'igo.auth.error.intern.Password expired'\n );\n }\n }\n }),\n switchMap(() => this.initializeAuthentication(true))\n );\n }\n\n private initializeAuthentication(\n isAuthenticated: boolean\n ): Observable<IUser> {\n if (!isAuthenticated) {\n this.authenticate$.next(false);\n return of(null);\n }\n\n if (this.userService) {\n const obs$ = this.authOptions.user.withSync\n ? this.userService.sync()\n : this.userService.getUser();\n\n return obs$.pipe(tap(() => this.authenticate$.next(true)));\n }\n\n this.authenticate$.next(true);\n return of(null);\n }\n}\n","import { Injectable, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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, OnDestroy, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { BaseStorage, StorageScope } from '@igo2/core/storage';\n\nimport { EMPTY, Subject } from 'rxjs';\nimport { debounceTime, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { AuthStorageOptions } from './auth-storage.interface';\nimport { AuthService } from './auth.service';\nimport { TokenService } from './token.service';\nimport { UserService } from './user/user.service';\n\nconst DEBOUNCE_TIME = 3000; // 3 seconds;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthStorageService\n extends BaseStorage<AuthStorageOptions>\n implements OnDestroy\n{\n private authService = inject(AuthService);\n private userService = inject(UserService, {\n optional: true\n });\n private tokenService = inject(TokenService);\n\n private preferencesChanged$ = new Subject<void>();\n private destroy$ = new Subject<void>();\n private pendingPreferences: Record<string, unknown> = {};\n private serverPreferences: Record<string, unknown> = {};\n\n constructor() {\n const config = inject(ConfigService);\n super(config);\n\n this.authService.authenticate$\n .pipe(\n switchMap((isAuthenticated) => {\n if (isAuthenticated && this.userService) {\n return this.userService.user$;\n }\n return EMPTY;\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((user) => {\n if (!user?.preference) {\n return;\n }\n\n this.serverPreferences = { ...user.preference };\n for (const key of Object.keys(user.preference)) {\n const value = user.preference[key];\n super.set(key, value);\n }\n });\n\n this.preferencesChanged$\n .pipe(\n debounceTime(DEBOUNCE_TIME), // Wait for more changes to accumulate\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.syncPreferences();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.preferencesChanged$.complete();\n }\n\n set(\n key: string,\n value: string | object | boolean | number,\n scope: StorageScope = StorageScope.LOCAL\n ) {\n if (scope === StorageScope.LOCAL && this.authService.authenticated) {\n this.pendingPreferences[key] = value;\n this.preferencesChanged$.next();\n }\n super.set(key, value, scope);\n }\n\n remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\n if (scope === StorageScope.LOCAL && this.authService.authenticated) {\n this.pendingPreferences[key] = undefined;\n this.preferencesChanged$.next();\n }\n super.remove(key, scope);\n }\n\n clear(scope: StorageScope = StorageScope.LOCAL) {\n if (scope === StorageScope.LOCAL && this.authService.authenticated) {\n this.pendingPreferences = {};\n this.preferencesChanged$.next();\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\n private syncPreferences() {\n if (Object.keys(this.pendingPreferences).length === 0) {\n return;\n }\n\n // Filter out preferences that haven't actually changed\n const changedPreferences: Record<string, unknown> = {};\n for (const key of Object.keys(this.pendingPreferences)) {\n const newValue = this.pendingPreferences[key];\n const oldValue = this.serverPreferences[key];\n\n if (JSON.stringify(newValue) !== JSON.stringify(oldValue)) {\n changedPreferences[key] = newValue;\n }\n }\n\n this.pendingPreferences = {};\n\n if (Object.keys(changedPreferences).length > 0) {\n this.userService?.updatePreference(changedPreferences).subscribe(() => {\n Object.assign(this.serverPreferences, changedPreferences);\n });\n }\n }\n}\n","import { Injectable, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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 { HttpClient } from '@angular/common/http';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport { Injectable, inject } 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 config = inject(ConfigService);\n private tokenService = inject(TokenService);\n private http = inject(HttpClient);\n\n private authOptions: AuthOptions;\n private refreshInProgress = false;\n private trustHosts: string[];\n private hostsWithCredentials: WithCredentialsOptions[];\n private hostsWithAuthByKey: AuthByKeyOptions[];\n\n constructor() {\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<unknown>,\n next: HttpHandler\n ): Observable<HttpEvent<unknown>> {\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\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 const 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 const replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;\n const 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 { Provider } from '@angular/core';\n\nimport { BaseUser } from '@igo2/core/user';\n\nexport interface AuthInternOptions {\n enabled?: boolean;\n}\n\nexport interface AuthFacebookOptions {\n enabled?: boolean;\n appId: string;\n}\n\nexport interface AuthGoogleOptions {\n enabled?: boolean;\n apiKey: string;\n clientId: string;\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 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 interface AuthOptions {\n url: string;\n /** User api url is the igo user versus the url is the authentification API */\n user?: IAuthUserIgoOptions;\n tokenKey?: string;\n allowAnonymous?: boolean;\n loginRoute?: string;\n logoutRedirectRoute?: 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 IAuthUserIgoOptions {\n apiUrl: string;\n // Allow to sync the user. Use it when the user may not exist on the user API system.\n withSync?: boolean;\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 User\n}\n","import { Injectable, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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, inject } 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 private authService = inject(AuthService);\n private config = inject(ConfigService);\n private router = inject(Router);\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 { ConfigService } from '@igo2/core/config';\n\nimport {\n AuthFeature,\n AuthFeatureKind,\n IAuthUserIgoOptions\n} from '../auth.interface';\nimport { USER_AUTH_OPTIONS, UserService } from './user.service';\n\nexport function withUserIgo(): AuthFeature<AuthFeatureKind.User> {\n return {\n kind: AuthFeatureKind.User,\n providers: [\n {\n provide: USER_AUTH_OPTIONS,\n useFactory: (config: ConfigService) => config.getConfig('auth.user'),\n deps: [ConfigService]\n },\n {\n provide: UserService,\n useFactory: (options: IAuthUserIgoOptions | undefined) => {\n if (!options) {\n return undefined;\n }\n\n return new UserService();\n },\n deps: [USER_AUTH_OPTIONS]\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":["tap"],"mappings":"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"}
|
package/locale/en.auth.json
CHANGED
|
@@ -19,11 +19,12 @@
|
|
|
19
19
|
"Username or password invalid": "Username or password invalid"
|
|
20
20
|
},
|
|
21
21
|
"microsoft": {
|
|
22
|
-
"login": "Sign in with
|
|
22
|
+
"login": "Sign in with Microsoft"
|
|
23
23
|
},
|
|
24
24
|
"microsoftb2c": {
|
|
25
|
-
"login": "Sign in"
|
|
26
|
-
}
|
|
25
|
+
"login": "Sign in with Microsoft"
|
|
26
|
+
},
|
|
27
|
+
"or": "Or"
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
}
|
package/locale/fr.auth.json
CHANGED
|
@@ -23,11 +23,12 @@
|
|
|
23
23
|
"logged": "Connecté avec Google"
|
|
24
24
|
},
|
|
25
25
|
"microsoft": {
|
|
26
|
-
"login": "Se connecter avec
|
|
26
|
+
"login": "Se connecter avec Microsoft"
|
|
27
27
|
},
|
|
28
28
|
"microsoftb2c": {
|
|
29
|
-
"login": "Se connecter"
|
|
30
|
-
}
|
|
29
|
+
"login": "Se connecter avec Microsoft"
|
|
30
|
+
},
|
|
31
|
+
"or": "Ou"
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@igo2/auth",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "21.0.0-next.1",
|
|
4
4
|
"description": "IGO Library",
|
|
5
5
|
"author": "IGO Community",
|
|
6
6
|
"keywords": [
|
|
@@ -18,38 +18,38 @@
|
|
|
18
18
|
},
|
|
19
19
|
"exports": {
|
|
20
20
|
".": {
|
|
21
|
-
"types": "./
|
|
21
|
+
"types": "./types/igo2-auth.d.ts",
|
|
22
22
|
"default": "./fesm2022/igo2-auth.mjs"
|
|
23
23
|
},
|
|
24
24
|
"./environment": {
|
|
25
|
-
"types": "./environment
|
|
25
|
+
"types": "./types/igo2-auth-environment.d.ts",
|
|
26
26
|
"default": "./fesm2022/igo2-auth-environment.mjs"
|
|
27
27
|
},
|
|
28
28
|
"./facebook": {
|
|
29
|
-
"types": "./facebook
|
|
29
|
+
"types": "./types/igo2-auth-facebook.d.ts",
|
|
30
30
|
"default": "./fesm2022/igo2-auth-facebook.mjs"
|
|
31
31
|
},
|
|
32
32
|
"./form": {
|
|
33
|
-
"types": "./form
|
|
33
|
+
"types": "./types/igo2-auth-form.d.ts",
|
|
34
34
|
"default": "./fesm2022/igo2-auth-form.mjs"
|
|
35
35
|
},
|
|
36
36
|
"./google": {
|
|
37
|
-
"types": "./google
|
|
37
|
+
"types": "./types/igo2-auth-google.d.ts",
|
|
38
38
|
"default": "./fesm2022/igo2-auth-google.mjs"
|
|
39
39
|
},
|
|
40
40
|
"./internal": {
|
|
41
|
-
"types": "./internal
|
|
41
|
+
"types": "./types/igo2-auth-internal.d.ts",
|
|
42
42
|
"default": "./fesm2022/igo2-auth-internal.mjs"
|
|
43
43
|
},
|
|
44
44
|
"./microsoft": {
|
|
45
|
-
"types": "./microsoft
|
|
45
|
+
"types": "./types/igo2-auth-microsoft.d.ts",
|
|
46
46
|
"default": "./fesm2022/igo2-auth-microsoft.mjs"
|
|
47
47
|
},
|
|
48
48
|
"./package.json": {
|
|
49
49
|
"default": "./package.json"
|
|
50
50
|
},
|
|
51
51
|
"./monitoring": {
|
|
52
|
-
"types": "./monitoring
|
|
52
|
+
"types": "./types/igo2-auth-monitoring.d.ts",
|
|
53
53
|
"default": "./fesm2022/igo2-auth-monitoring.mjs"
|
|
54
54
|
}
|
|
55
55
|
},
|
|
@@ -57,26 +57,27 @@
|
|
|
57
57
|
"tslib": "^2.6.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@angular/cdk": "^
|
|
61
|
-
"@angular/common": "^
|
|
62
|
-
"@angular/core": "^
|
|
63
|
-
"@angular/forms": "^
|
|
64
|
-
"@angular/material": "^
|
|
65
|
-
"@angular/router": "^
|
|
66
|
-
"@azure/msal-angular": "^
|
|
67
|
-
"@azure/msal-browser": "^
|
|
68
|
-
"@igo2/common": "^
|
|
69
|
-
"@igo2/core": "^
|
|
70
|
-
"@igo2/utils": "^
|
|
60
|
+
"@angular/cdk": "^21.0.0",
|
|
61
|
+
"@angular/common": "^21.0.0",
|
|
62
|
+
"@angular/core": "^21.0.0",
|
|
63
|
+
"@angular/forms": "^21.0.0",
|
|
64
|
+
"@angular/material": "^21.0.0",
|
|
65
|
+
"@angular/router": "^21.0.0",
|
|
66
|
+
"@azure/msal-angular": "^5.0.0",
|
|
67
|
+
"@azure/msal-browser": "^5.0.0",
|
|
68
|
+
"@igo2/common": "^21.0.0-next.1",
|
|
69
|
+
"@igo2/core": "^21.0.0-next.1",
|
|
70
|
+
"@igo2/utils": "^21.0.0-next.1",
|
|
71
71
|
"jwt-decode": "^4.0.0",
|
|
72
72
|
"rxjs": "^7.8.0",
|
|
73
73
|
"ts-cacheable": "^1.0.6",
|
|
74
|
-
"ts-md5": "^
|
|
74
|
+
"ts-md5": "^2.0.0"
|
|
75
75
|
},
|
|
76
76
|
"engines": {
|
|
77
77
|
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
|
|
78
78
|
},
|
|
79
79
|
"module": "fesm2022/igo2-auth.mjs",
|
|
80
|
-
"typings": "
|
|
81
|
-
"sideEffects": false
|
|
80
|
+
"typings": "types/igo2-auth.d.ts",
|
|
81
|
+
"sideEffects": false,
|
|
82
|
+
"type": "module"
|
|
82
83
|
}
|
|
@@ -3,7 +3,7 @@ import { UntypedFormGroup } from '@angular/forms';
|
|
|
3
3
|
import { AuthService } from '@igo2/auth';
|
|
4
4
|
|
|
5
5
|
declare class AuthInternComponent {
|
|
6
|
-
auth: AuthService
|
|
6
|
+
auth: AuthService<any>;
|
|
7
7
|
private languageService;
|
|
8
8
|
get allowAnonymous(): boolean;
|
|
9
9
|
set allowAnonymous(value: boolean);
|
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
import { AuthFeature, AuthFeatureKind } from '@igo2/auth';
|
|
1
|
+
import { AuthService, AuthFeature, AuthFeatureKind, AuthOptions, IUser } from '@igo2/auth';
|
|
2
2
|
import { ConfigService } from '@igo2/core/config';
|
|
3
|
-
import { BrowserAuthOptions, PublicClientApplication } from '@azure/msal-browser';
|
|
3
|
+
import { BrowserAuthOptions, IPublicClientApplication, PublicClientApplication } from '@azure/msal-browser';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import {
|
|
5
|
+
import { OnInit } from '@angular/core';
|
|
6
6
|
import { MsalGuardConfiguration } from '@azure/msal-angular';
|
|
7
|
+
import { Observable } from 'rxjs';
|
|
7
8
|
|
|
8
|
-
declare class AuthMicrosoftComponent {
|
|
9
|
-
private
|
|
10
|
-
private config;
|
|
9
|
+
declare class AuthMicrosoftComponent implements OnInit {
|
|
10
|
+
private auth;
|
|
11
11
|
private appRef;
|
|
12
|
-
private msalService;
|
|
13
|
-
private msalGuardConfig;
|
|
14
|
-
private options?;
|
|
15
|
-
private readonly _destroying$;
|
|
16
12
|
readonly login: i0.OutputEmitterRef<boolean>;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
loginMicrosoft(): void;
|
|
21
|
-
private checkAccount;
|
|
22
|
-
private getConf;
|
|
13
|
+
error: string;
|
|
14
|
+
ngOnInit(): void;
|
|
15
|
+
loginUser(): void;
|
|
23
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthMicrosoftComponent, never>;
|
|
24
17
|
static ɵcmp: i0.ɵɵComponentDeclaration<AuthMicrosoftComponent, "igo-auth-microsoft", never, {}, { "login": "login"; }, never, never, true, never>;
|
|
25
18
|
}
|
|
@@ -34,7 +27,6 @@ declare class AuthMicrosoftb2cComponent {
|
|
|
34
27
|
private readonly _destroying$;
|
|
35
28
|
readonly login: i0.OutputEmitterRef<boolean>;
|
|
36
29
|
private broadcastService;
|
|
37
|
-
svgIcon: IconSvg;
|
|
38
30
|
constructor();
|
|
39
31
|
loginMicrosoftb2c(): void;
|
|
40
32
|
private checkAccount;
|
|
@@ -45,6 +37,9 @@ declare class AuthMicrosoftb2cComponent {
|
|
|
45
37
|
|
|
46
38
|
interface AuthMicrosoftOptions extends BrowserAuthOptions {
|
|
47
39
|
enabled?: boolean;
|
|
40
|
+
autoLogin?: boolean;
|
|
41
|
+
domainHint?: string;
|
|
42
|
+
applicationId?: string;
|
|
48
43
|
}
|
|
49
44
|
interface AuthMicrosoftb2cOptions {
|
|
50
45
|
enabled?: boolean;
|
|
@@ -70,16 +65,36 @@ interface AuthMicrosoftb2cOptionsAuthorities {
|
|
|
70
65
|
interface AuthMicrosoftb2cOptionsAuthority {
|
|
71
66
|
authority: string;
|
|
72
67
|
}
|
|
73
|
-
interface
|
|
68
|
+
interface MsalGuardConfigurationWithType extends MsalGuardConfiguration {
|
|
69
|
+
type: string;
|
|
70
|
+
}
|
|
71
|
+
interface MsalGuardConfigurationWithType extends MsalGuardConfiguration {
|
|
74
72
|
type: string;
|
|
75
73
|
}
|
|
76
74
|
|
|
77
75
|
declare const AUTH_MICROSOFT_DIRECTIVES: readonly [typeof AuthMicrosoftComponent, typeof AuthMicrosoftb2cComponent];
|
|
78
|
-
declare function MSALConfigFactory(config: ConfigService):
|
|
76
|
+
declare function MSALConfigFactory(config: ConfigService): IPublicClientApplication;
|
|
79
77
|
declare function MSALConfigFactoryb2c(config: ConfigService): PublicClientApplication;
|
|
80
|
-
declare function MSALAngularConfigFactory():
|
|
81
|
-
declare function MSALAngularConfigFactoryb2c(config: ConfigService):
|
|
82
|
-
declare function withMicrosoftSupport(type?: string): AuthFeature<AuthFeatureKind.Microsoft>;
|
|
78
|
+
declare function MSALAngularConfigFactory(config: ConfigService): MsalGuardConfigurationWithType;
|
|
79
|
+
declare function MSALAngularConfigFactoryb2c(config: ConfigService): MsalGuardConfigurationWithType;
|
|
80
|
+
declare function withMicrosoftSupport(type?: string, serviceFactory?: IMsalServiceFactory): AuthFeature<AuthFeatureKind.Microsoft>;
|
|
81
|
+
type IMsalServiceFactory = (config: ConfigService) => AuthService;
|
|
82
|
+
|
|
83
|
+
interface IAuthMsalOptions extends AuthOptions {
|
|
84
|
+
microsoft: AuthMicrosoftOptions;
|
|
85
|
+
}
|
|
86
|
+
declare class AuthMsalService extends AuthService<IAuthMsalOptions> {
|
|
87
|
+
private msalService;
|
|
88
|
+
private msalGuardConfig;
|
|
89
|
+
private _isInitialized$;
|
|
90
|
+
autoLogin: boolean;
|
|
91
|
+
constructor();
|
|
92
|
+
login(): Observable<IUser>;
|
|
93
|
+
logout(): void;
|
|
94
|
+
private getConf;
|
|
95
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthMsalService, never>;
|
|
96
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthMsalService>;
|
|
97
|
+
}
|
|
83
98
|
|
|
84
|
-
export { AUTH_MICROSOFT_DIRECTIVES, AuthMicrosoftComponent, AuthMicrosoftb2cComponent, MSALAngularConfigFactory, MSALAngularConfigFactoryb2c, MSALConfigFactory, MSALConfigFactoryb2c, withMicrosoftSupport };
|
|
85
|
-
export type { AuthMicrosoftOptions, AuthMicrosoftb2cOptions, AuthMicrosoftb2cOptionsAuthorities, AuthMicrosoftb2cOptionsAuthority, AuthMicrosoftb2cOptionsNames, AuthMicrosoftb2cOptionsOptions,
|
|
99
|
+
export { AUTH_MICROSOFT_DIRECTIVES, AuthMicrosoftComponent, AuthMicrosoftb2cComponent, AuthMsalService, MSALAngularConfigFactory, MSALAngularConfigFactoryb2c, MSALConfigFactory, MSALConfigFactoryb2c, withMicrosoftSupport };
|
|
100
|
+
export type { AuthMicrosoftOptions, AuthMicrosoftb2cOptions, AuthMicrosoftb2cOptionsAuthorities, AuthMicrosoftb2cOptionsAuthority, AuthMicrosoftb2cOptionsNames, AuthMicrosoftb2cOptionsOptions, IMsalServiceFactory, MsalGuardConfigurationWithType };
|