@thecla/b2c-angular 10.0.0 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,9 +6,9 @@ import { filter, map, tap, first, catchError, switchMap, mergeMap } from 'rxjs/o
6
6
  import { toSignal } from '@angular/core/rxjs-interop';
7
7
  import { pipe, from, of, throwError } from 'rxjs';
8
8
  import { HTTP_INTERCEPTORS } from '@angular/common/http';
9
- import * as i1$1 from '@ngrx/effects';
10
- import { createEffect, ofType, EffectsModule, provideEffects } from '@ngrx/effects';
11
- import * as i3 from '@angular/router';
9
+ import * as i2 from '@ngrx/effects';
10
+ import { Actions, createEffect, ofType, EffectsModule, provideEffects } from '@ngrx/effects';
11
+ import { Router } from '@angular/router';
12
12
  import { PublicClientApplication, InteractionRequiredAuthError, AuthError, BrowserAuthErrorCodes } from '@azure/msal-browser';
13
13
 
14
14
  const init = createAction('[@thecla/b2c-angular] init');
@@ -52,8 +52,8 @@ function getIsAuthenticatedSignal() {
52
52
  }
53
53
 
54
54
  class AuthGuard {
55
- constructor(store) {
56
- this.store = store;
55
+ constructor() {
56
+ this.store = inject(Store);
57
57
  this.authenticated$ = this.store.pipe(isAuthenticated);
58
58
  }
59
59
  canActivate(next, state) {
@@ -63,28 +63,28 @@ class AuthGuard {
63
63
  }
64
64
  }), first());
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthGuard, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthGuard, decorators: [{
70
70
  type: Injectable,
71
71
  args: [{
72
72
  providedIn: 'root',
73
73
  }]
74
- }], ctorParameters: () => [{ type: i1.Store }] });
74
+ }] });
75
75
 
76
76
  class AuthConfig {
77
77
  }
78
78
 
79
79
  class AuthService {
80
- constructor(config) {
81
- this.config = config;
80
+ constructor() {
81
+ this.config = inject(AuthConfig);
82
82
  const msalConfig = {
83
83
  auth: {
84
- clientId: config.clientId,
85
- authority: `${config.authority}/${config.signInPolicy}`,
86
- knownAuthorities: config.knownAuthorities,
87
- redirectUri: config.redirectUri ?? location.origin,
84
+ clientId: this.config.clientId,
85
+ authority: `${this.config.authority}/${this.config.signInPolicy}`,
86
+ knownAuthorities: this.config.knownAuthorities,
87
+ redirectUri: this.config.redirectUri ?? location.origin,
88
88
  },
89
89
  };
90
90
  this.clientApplication = new PublicClientApplication(msalConfig);
@@ -127,21 +127,21 @@ class AuthService {
127
127
  return of(undefined);
128
128
  }
129
129
  }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthService, deps: [{ token: AuthConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
131
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthService, providedIn: 'root' }); }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthService, providedIn: 'root' }); }
132
132
  }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthService, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthService, decorators: [{
134
134
  type: Injectable,
135
135
  args: [{
136
136
  providedIn: 'root',
137
137
  }]
138
- }], ctorParameters: () => [{ type: AuthConfig }] });
138
+ }], ctorParameters: () => [] });
139
139
 
140
140
  class AuthEffects {
141
- constructor(actions$, auth, router) {
142
- this.actions$ = actions$;
143
- this.auth = auth;
144
- this.router = router;
141
+ constructor() {
142
+ this.actions$ = inject(Actions);
143
+ this.auth = inject(AuthService);
144
+ this.router = inject(Router);
145
145
  this.signIn$ = createEffect(() => this.actions$.pipe(ofType(signIn), switchMap(action => this.auth.loginWithRedirect({ target: action.returnUrl }).pipe(map(() => signInRedirected()), catchError(error => of(signInFailed({ error })))))));
146
146
  this.passwordReset$ = createEffect(() => this.actions$.pipe(ofType(resetPassword), switchMap(action => this.auth.resetPasswordWithRedirect({ target: action.returnUrl }).pipe(map(() => signInRedirected()), catchError(error => of(signInFailed({ error })))))));
147
147
  this.signInCompleted$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), map(({ state, user }) => (state.passwordReset ? signOut() : signedIn({ user })))));
@@ -180,21 +180,21 @@ class AuthEffects {
180
180
  completeSignIn() {
181
181
  return this.auth.handleRedirectCallback().pipe(map(result => signInCompleted({ state: result.state, user: result.user })), catchError(error => of(signInFailed({ error }))));
182
182
  }
183
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthEffects, deps: [{ token: i1$1.Actions }, { token: AuthService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
184
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthEffects }); }
183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
184
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthEffects }); }
185
185
  }
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthEffects, decorators: [{
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthEffects, decorators: [{
187
187
  type: Injectable
188
- }], ctorParameters: () => [{ type: i1$1.Actions }, { type: AuthService }, { type: i3.Router }] });
188
+ }] });
189
189
 
190
190
  class JwtInterceptor {
191
191
  intercept(request, next) {
192
192
  return jwtInterceptor(request, next.handle);
193
193
  }
194
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: JwtInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
195
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: JwtInterceptor }); }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: JwtInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
195
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: JwtInterceptor }); }
196
196
  }
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: JwtInterceptor, decorators: [{
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: JwtInterceptor, decorators: [{
198
198
  type: Injectable
199
199
  }] });
200
200
  const jwtInterceptor = (request, next) => {
@@ -229,11 +229,11 @@ class AuthModule {
229
229
  ],
230
230
  };
231
231
  }
232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
233
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, imports: [i1.StoreFeatureModule, i1$1.EffectsFeatureModule] }); }
234
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, imports: [StoreModule.forFeature(authFeature), EffectsModule.forFeature([AuthEffects])] }); }
232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
233
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: AuthModule, imports: [i1.StoreFeatureModule, i2.EffectsFeatureModule] }); }
234
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthModule, imports: [StoreModule.forFeature(authFeature), EffectsModule.forFeature([AuthEffects])] }); }
235
235
  }
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, decorators: [{
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthModule, decorators: [{
237
237
  type: NgModule,
238
238
  args: [{
239
239
  declarations: [],
@@ -1 +1 @@
1
- {"version":3,"file":"thecla-b2c-angular.mjs","sources":["../../../projects/b2c-angular/src/lib/auth.actions.ts","../../../projects/b2c-angular/src/lib/auth.reducer.ts","../../../projects/b2c-angular/src/lib/auth.selectors.ts","../../../projects/b2c-angular/src/lib/auth.guard.ts","../../../projects/b2c-angular/src/lib/auth-config.ts","../../../projects/b2c-angular/src/lib/auth.service.ts","../../../projects/b2c-angular/src/lib/auth.effects.ts","../../../projects/b2c-angular/src/lib/jwt.interceptor.ts","../../../projects/b2c-angular/src/lib/auth.module.ts","../../../projects/b2c-angular/src/lib/provide-auth.ts","../../../projects/b2c-angular/src/thecla-b2c-angular.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { Profile } from './auth.reducer';\n\nexport const init = createAction('[@thecla/b2c-angular] init');\n\nexport const signIn = createAction('[@thecla/b2c-angular] sign-in', props<{ returnUrl: string }>());\n\nexport const signInRedirected = createAction('[@thecla/b2c-angular] sign in redirected');\n\nexport const signInCompleted = createAction(\n '[@thecla/b2c-angular] sign in completed',\n props<{ state: { target: string; passwordReset: boolean }; user: Profile }>(),\n);\n\nexport const signedIn = createAction('[@thecla/b2c-angular] signed in', props<{ user: Profile }>());\n\nexport const signInFailed = createAction('[@thecla/b2c-angular] sign in failed', props<{ error: Error }>());\n\nexport const signOut = createAction('[@thecla/b2c-angular] sign out');\n\nexport const signedOut = createAction('[@thecla/b2c-angular] signed out');\n\nexport const resetPassword = createAction('[@thecla/b2c-angular] reset password', props<{ returnUrl: string }>());\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { signInFailed, signedIn, signedOut } from './auth.actions';\n\nexport interface Profile {\n [key: string]: any;\n sub: string;\n name?: string;\n nickname?: string;\n picture?: string;\n email?: string;\n}\n\nexport interface State {\n authenticating: boolean;\n authenticated: boolean;\n user: Profile | undefined;\n}\n\nexport const noAuthentication: State = {\n authenticating: false,\n authenticated: false,\n user: undefined,\n};\n\nexport const startAuthentication: State = {\n authenticating: true,\n authenticated: false,\n user: undefined,\n};\n\nexport const authFeature = createFeature({\n name: 'auth',\n reducer: createReducer(\n startAuthentication,\n on(signedIn, (state, { user }) => ({\n ...state,\n authenticating: false,\n authenticated: true,\n user,\n })),\n on(signedOut, _ => noAuthentication),\n on(signInFailed, _ => noAuthentication),\n ),\n});\n\nexport const { selectAuthState, reducer } = authFeature;\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Store, select } from '@ngrx/store';\nimport { pipe } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { selectAuthState } from './auth.reducer';\n\nexport const isAuthenticated = pipe(\n select(selectAuthState),\n filter(state => !state.authenticating),\n map(state => state.authenticated),\n);\n\nexport const getUser = pipe(\n select(selectAuthState),\n filter(state => !state.authenticating),\n map(state => state.user),\n);\n\nexport function getUserSignal() {\n return toSignal(inject(Store).pipe(getUser));\n}\n\nexport function getIsAuthenticatedSignal() {\n return toSignal(inject(Store).pipe(isAuthenticated));\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { first, tap } from 'rxjs/operators';\nimport { signIn } from './auth.actions';\nimport { isAuthenticated } from './auth.selectors';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n private readonly authenticated$ = this.store.pipe(isAuthenticated);\n\n public constructor(private readonly store: Store) {}\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.authenticated$.pipe(\n tap(auth => {\n if (!auth) {\n this.store.dispatch(signIn({ returnUrl: state.url }));\n }\n }),\n first(),\n );\n }\n}\n","export abstract class AuthConfig {\n public abstract clientId: string;\n public abstract authority: string;\n public abstract signInPolicy: string;\n public abstract resetPasswordPolicy: string;\n public abstract knownAuthorities: string[];\n public abstract scopes: string[];\n public abstract redirectUri?: string;\n}\n","import { Injectable } from '@angular/core';\nimport {\n AuthenticationResult,\n Configuration,\n InteractionRequiredAuthError,\n PublicClientApplication,\n} from '@azure/msal-browser';\nimport { from, of, throwError } from 'rxjs';\nimport { catchError, filter, map } from 'rxjs/operators';\nimport { AuthConfig } from './auth-config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly clientApplication: PublicClientApplication;\n\n public constructor(private readonly config: AuthConfig) {\n const msalConfig: Configuration = {\n auth: {\n clientId: config.clientId,\n authority: `${config.authority}/${config.signInPolicy}`,\n knownAuthorities: config.knownAuthorities,\n redirectUri: config.redirectUri ?? location.origin,\n },\n };\n\n this.clientApplication = new PublicClientApplication(msalConfig);\n }\n\n public loginWithRedirect(state: { target: string }) {\n return from(\n this.clientApplication.loginRedirect({\n scopes: this.config.scopes,\n state: JSON.stringify({ ...state, passwordReset: false }),\n }),\n );\n }\n\n public resetPasswordWithRedirect(state: { target: string }) {\n return from(\n this.clientApplication.loginRedirect({\n authority: `${this.config.authority}/${this.config.resetPasswordPolicy}`,\n scopes: this.config.scopes,\n state: JSON.stringify({ ...state, passwordReset: true }),\n prompt: 'login',\n }),\n );\n }\n\n public handleRedirectCallback() {\n return from(this.clientApplication.handleRedirectPromise()).pipe(\n filter((result): result is AuthenticationResult => result !== null),\n map(result => ({\n state: result.state ? JSON.parse(result.state) : undefined,\n user: { sub: result.uniqueId, ...result.idTokenClaims },\n })),\n );\n }\n\n public getAccessToken() {\n const account = this.clientApplication.getAllAccounts()[0];\n const scopes = this.config.scopes;\n\n return from(this.clientApplication.acquireTokenSilent({ account, scopes })).pipe(map(result => result.accessToken));\n }\n\n public logout() {\n return from(this.clientApplication.logoutRedirect({ postLogoutRedirectUri: location.origin }));\n }\n\n public checkSession() {\n const accounts = this.clientApplication.getAllAccounts();\n const scopes = this.config.scopes;\n\n if (accounts.length === 1) {\n return from(this.clientApplication.acquireTokenSilent({ account: accounts[0], scopes })).pipe(\n map(result => ({ sub: result.uniqueId, ...result.idTokenClaims })),\n catchError(error => (error instanceof InteractionRequiredAuthError ? of(undefined) : throwError(error))),\n );\n } else {\n return of(undefined);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthError, BrowserAuthErrorCodes } from '@azure/msal-browser';\nimport { Actions, OnInitEffects, createEffect, ofType } from '@ngrx/effects';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, switchMap } from 'rxjs/operators';\nimport {\n init,\n resetPassword,\n signIn,\n signInCompleted,\n signInFailed,\n signInRedirected,\n signOut,\n signedIn,\n signedOut,\n} from './auth.actions';\nimport { AuthService } from './auth.service';\n\n@Injectable()\nexport class AuthEffects implements OnInitEffects {\n public readonly signIn$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signIn),\n switchMap(action =>\n this.auth.loginWithRedirect({ target: action.returnUrl }).pipe(\n map(() => signInRedirected()),\n catchError(error => of(signInFailed({ error }))),\n ),\n ),\n ),\n );\n\n public readonly passwordReset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(resetPassword),\n switchMap(action =>\n this.auth.resetPasswordWithRedirect({ target: action.returnUrl }).pipe(\n map(() => signInRedirected()),\n catchError(error => of(signInFailed({ error }))),\n ),\n ),\n ),\n );\n\n public readonly signInCompleted$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signInCompleted),\n map(({ state, user }) => (state.passwordReset ? signOut() : signedIn({ user }))),\n ),\n );\n\n public readonly redirect$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(signInCompleted),\n switchMap(action => this.router.navigateByUrl(action.state.target, { replaceUrl: true })),\n ),\n { dispatch: false },\n );\n\n public readonly signOut$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signOut),\n switchMap(_ =>\n this.auth.logout().pipe(\n map(() => signedOut()),\n catchError(() => of(signedOut())),\n ),\n ),\n ),\n );\n\n public readonly init$ = createEffect(() =>\n this.actions$.pipe(\n ofType(init),\n switchMap(() => {\n const params = window.location.hash;\n\n if (\n (params.includes('code=') && params.includes('state=')) ||\n (params.includes('error=') && params.includes('error_description='))\n ) {\n return this.completeSignIn();\n } else {\n return this.auth.checkSession().pipe(\n map(user => this.getAuthResult(user)),\n catchError(error => of(signInFailed({ error }))),\n );\n }\n }),\n ),\n );\n\n public readonly resetPassword$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signInFailed),\n filter(action => action.error instanceof AuthError),\n map(action => action.error as AuthError),\n filter(AuthEffects.isForgotPasswordError),\n map(() => resetPassword({ returnUrl: '/' })),\n ),\n );\n\n public readonly failed$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signInFailed),\n filter(action => action.error instanceof AuthError),\n map(action => action.error as AuthError),\n filter(AuthEffects.isInteractionInProgress),\n map(() => signOut()),\n ),\n );\n\n public constructor(\n private readonly actions$: Actions,\n private readonly auth: AuthService,\n private readonly router: Router,\n ) {}\n\n public ngrxOnInitEffects() {\n return init();\n }\n\n private static isForgotPasswordError(error: AuthError) {\n return error.errorCode === 'access_denied' && error.errorMessage.indexOf('AADB2C90118') !== -1;\n }\n\n private static isInteractionInProgress(error: AuthError) {\n return error.errorCode === BrowserAuthErrorCodes.interactionInProgress;\n }\n\n private getAuthResult(user: { sub: string } | undefined) {\n if (user) {\n return signedIn({ user });\n } else {\n return signedOut();\n }\n }\n\n private completeSignIn() {\n return this.auth.handleRedirectCallback().pipe(\n map(result => signInCompleted({ state: result.state, user: result.user })),\n catchError(error => of(signInFailed({ error }))),\n );\n }\n}\n","import { HttpHandler, HttpInterceptor, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { AuthService } from './auth.service';\n\n@Injectable()\nexport class JwtInterceptor implements HttpInterceptor {\n public intercept(request: HttpRequest<any>, next: HttpHandler) {\n return jwtInterceptor(request, next.handle);\n }\n}\n\nexport const jwtInterceptor: HttpInterceptorFn = (request, next) => {\n if (isSameDomain(request)) {\n return inject(AuthService)\n .getAccessToken()\n .pipe(\n map(token => request.clone({ setHeaders: { Authorization: `Bearer ${token}` } })),\n mergeMap(authorizedRequest => next(authorizedRequest)),\n );\n } else {\n return next(request);\n }\n};\n\nfunction isSameDomain(request: HttpRequest<any>) {\n const isAbsolute = /^https?:\\/\\//i.test(request.url);\n\n return !isAbsolute;\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { AuthConfig } from './auth-config';\nimport { AuthEffects } from './auth.effects';\nimport { authFeature } from './auth.reducer';\nimport { JwtInterceptor } from './jwt.interceptor';\n\n@NgModule({\n declarations: [],\n imports: [StoreModule.forFeature(authFeature), EffectsModule.forFeature([AuthEffects])],\n exports: [],\n})\nexport class AuthModule {\n public static forRoot(config: AuthConfig): ModuleWithProviders<AuthModule> {\n return {\n ngModule: AuthModule,\n providers: [\n {\n provide: AuthConfig,\n useValue: config,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true,\n },\n ],\n };\n }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { provideEffects } from '@ngrx/effects';\nimport { provideState } from '@ngrx/store';\nimport { AuthConfig } from './auth-config';\nimport { AuthEffects } from './auth.effects';\nimport { authFeature } from './auth.reducer';\n\nexport function provideAuth(config: AuthConfig) {\n const effects = provideEffects(AuthEffects);\n const state = provideState(authFeature);\n\n return makeEnvironmentProviders([\n effects,\n state,\n {\n provide: AuthConfig,\n useValue: config,\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthConfig","i1","i2.AuthService","i2"],"mappings":"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"}
1
+ {"version":3,"file":"thecla-b2c-angular.mjs","sources":["../../../projects/b2c-angular/src/lib/auth.actions.ts","../../../projects/b2c-angular/src/lib/auth.reducer.ts","../../../projects/b2c-angular/src/lib/auth.selectors.ts","../../../projects/b2c-angular/src/lib/auth.guard.ts","../../../projects/b2c-angular/src/lib/auth-config.ts","../../../projects/b2c-angular/src/lib/auth.service.ts","../../../projects/b2c-angular/src/lib/auth.effects.ts","../../../projects/b2c-angular/src/lib/jwt.interceptor.ts","../../../projects/b2c-angular/src/lib/auth.module.ts","../../../projects/b2c-angular/src/lib/provide-auth.ts","../../../projects/b2c-angular/src/thecla-b2c-angular.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { Profile } from './auth.reducer';\n\nexport const init = createAction('[@thecla/b2c-angular] init');\n\nexport const signIn = createAction('[@thecla/b2c-angular] sign-in', props<{ returnUrl: string }>());\n\nexport const signInRedirected = createAction('[@thecla/b2c-angular] sign in redirected');\n\nexport const signInCompleted = createAction(\n '[@thecla/b2c-angular] sign in completed',\n props<{ state: { target: string; passwordReset: boolean }; user: Profile }>(),\n);\n\nexport const signedIn = createAction('[@thecla/b2c-angular] signed in', props<{ user: Profile }>());\n\nexport const signInFailed = createAction('[@thecla/b2c-angular] sign in failed', props<{ error: Error }>());\n\nexport const signOut = createAction('[@thecla/b2c-angular] sign out');\n\nexport const signedOut = createAction('[@thecla/b2c-angular] signed out');\n\nexport const resetPassword = createAction('[@thecla/b2c-angular] reset password', props<{ returnUrl: string }>());\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { signInFailed, signedIn, signedOut } from './auth.actions';\n\nexport interface Profile {\n [key: string]: any;\n sub: string;\n name?: string;\n nickname?: string;\n picture?: string;\n email?: string;\n}\n\nexport interface State {\n authenticating: boolean;\n authenticated: boolean;\n user: Profile | undefined;\n}\n\nexport const noAuthentication: State = {\n authenticating: false,\n authenticated: false,\n user: undefined,\n};\n\nexport const startAuthentication: State = {\n authenticating: true,\n authenticated: false,\n user: undefined,\n};\n\nexport const authFeature = createFeature({\n name: 'auth',\n reducer: createReducer(\n startAuthentication,\n on(signedIn, (state, { user }) => ({\n ...state,\n authenticating: false,\n authenticated: true,\n user,\n })),\n on(signedOut, _ => noAuthentication),\n on(signInFailed, _ => noAuthentication),\n ),\n});\n\nexport const { selectAuthState, reducer } = authFeature;\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Store, select } from '@ngrx/store';\nimport { pipe } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { selectAuthState } from './auth.reducer';\n\nexport const isAuthenticated = pipe(\n select(selectAuthState),\n filter(state => !state.authenticating),\n map(state => state.authenticated),\n);\n\nexport const getUser = pipe(\n select(selectAuthState),\n filter(state => !state.authenticating),\n map(state => state.user),\n);\n\nexport function getUserSignal() {\n return toSignal(inject(Store).pipe(getUser));\n}\n\nexport function getIsAuthenticatedSignal() {\n return toSignal(inject(Store).pipe(isAuthenticated));\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { first, tap } from 'rxjs/operators';\nimport { signIn } from './auth.actions';\nimport { isAuthenticated } from './auth.selectors';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n private readonly store = inject(Store);\n\n private readonly authenticated$ = this.store.pipe(isAuthenticated);\n\n public canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.authenticated$.pipe(\n tap(auth => {\n if (!auth) {\n this.store.dispatch(signIn({ returnUrl: state.url }));\n }\n }),\n first(),\n );\n }\n}\n","export abstract class AuthConfig {\n public abstract clientId: string;\n public abstract authority: string;\n public abstract signInPolicy: string;\n public abstract resetPasswordPolicy: string;\n public abstract knownAuthorities: string[];\n public abstract scopes: string[];\n public abstract redirectUri?: string;\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthenticationResult,\n Configuration,\n InteractionRequiredAuthError,\n PublicClientApplication,\n} from '@azure/msal-browser';\nimport { from, of, throwError } from 'rxjs';\nimport { catchError, filter, map } from 'rxjs/operators';\nimport { AuthConfig } from './auth-config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly config = inject(AuthConfig);\n\n private readonly clientApplication: PublicClientApplication;\n\n public constructor() {\n const msalConfig: Configuration = {\n auth: {\n clientId: this.config.clientId,\n authority: `${this.config.authority}/${this.config.signInPolicy}`,\n knownAuthorities: this.config.knownAuthorities,\n redirectUri: this.config.redirectUri ?? location.origin,\n },\n };\n\n this.clientApplication = new PublicClientApplication(msalConfig);\n }\n\n public loginWithRedirect(state: { target: string }) {\n return from(\n this.clientApplication.loginRedirect({\n scopes: this.config.scopes,\n state: JSON.stringify({ ...state, passwordReset: false }),\n }),\n );\n }\n\n public resetPasswordWithRedirect(state: { target: string }) {\n return from(\n this.clientApplication.loginRedirect({\n authority: `${this.config.authority}/${this.config.resetPasswordPolicy}`,\n scopes: this.config.scopes,\n state: JSON.stringify({ ...state, passwordReset: true }),\n prompt: 'login',\n }),\n );\n }\n\n public handleRedirectCallback() {\n return from(this.clientApplication.handleRedirectPromise()).pipe(\n filter((result): result is AuthenticationResult => result !== null),\n map(result => ({\n state: result.state ? JSON.parse(result.state) : undefined,\n user: { sub: result.uniqueId, ...result.idTokenClaims },\n })),\n );\n }\n\n public getAccessToken() {\n const account = this.clientApplication.getAllAccounts()[0];\n const scopes = this.config.scopes;\n\n return from(this.clientApplication.acquireTokenSilent({ account, scopes })).pipe(map(result => result.accessToken));\n }\n\n public logout() {\n return from(this.clientApplication.logoutRedirect({ postLogoutRedirectUri: location.origin }));\n }\n\n public checkSession() {\n const accounts = this.clientApplication.getAllAccounts();\n const scopes = this.config.scopes;\n\n if (accounts.length === 1) {\n return from(this.clientApplication.acquireTokenSilent({ account: accounts[0], scopes })).pipe(\n map(result => ({ sub: result.uniqueId, ...result.idTokenClaims })),\n catchError(error => (error instanceof InteractionRequiredAuthError ? of(undefined) : throwError(error))),\n );\n } else {\n return of(undefined);\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthError, BrowserAuthErrorCodes } from '@azure/msal-browser';\nimport { Actions, OnInitEffects, createEffect, ofType } from '@ngrx/effects';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, switchMap } from 'rxjs/operators';\nimport {\n init,\n resetPassword,\n signIn,\n signInCompleted,\n signInFailed,\n signInRedirected,\n signOut,\n signedIn,\n signedOut,\n} from './auth.actions';\nimport { AuthService } from './auth.service';\n\n@Injectable()\nexport class AuthEffects implements OnInitEffects {\n private readonly actions$ = inject(Actions);\n private readonly auth = inject(AuthService);\n private readonly router = inject(Router);\n\n public readonly signIn$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signIn),\n switchMap(action =>\n this.auth.loginWithRedirect({ target: action.returnUrl }).pipe(\n map(() => signInRedirected()),\n catchError(error => of(signInFailed({ error }))),\n ),\n ),\n ),\n );\n\n public readonly passwordReset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(resetPassword),\n switchMap(action =>\n this.auth.resetPasswordWithRedirect({ target: action.returnUrl }).pipe(\n map(() => signInRedirected()),\n catchError(error => of(signInFailed({ error }))),\n ),\n ),\n ),\n );\n\n public readonly signInCompleted$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signInCompleted),\n map(({ state, user }) => (state.passwordReset ? signOut() : signedIn({ user }))),\n ),\n );\n\n public readonly redirect$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(signInCompleted),\n switchMap(action => this.router.navigateByUrl(action.state.target, { replaceUrl: true })),\n ),\n { dispatch: false },\n );\n\n public readonly signOut$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signOut),\n switchMap(_ =>\n this.auth.logout().pipe(\n map(() => signedOut()),\n catchError(() => of(signedOut())),\n ),\n ),\n ),\n );\n\n public readonly init$ = createEffect(() =>\n this.actions$.pipe(\n ofType(init),\n switchMap(() => {\n const params = window.location.hash;\n\n if (\n (params.includes('code=') && params.includes('state=')) ||\n (params.includes('error=') && params.includes('error_description='))\n ) {\n return this.completeSignIn();\n } else {\n return this.auth.checkSession().pipe(\n map(user => this.getAuthResult(user)),\n catchError(error => of(signInFailed({ error }))),\n );\n }\n }),\n ),\n );\n\n public readonly resetPassword$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signInFailed),\n filter(action => action.error instanceof AuthError),\n map(action => action.error as AuthError),\n filter(AuthEffects.isForgotPasswordError),\n map(() => resetPassword({ returnUrl: '/' })),\n ),\n );\n\n public readonly failed$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signInFailed),\n filter(action => action.error instanceof AuthError),\n map(action => action.error as AuthError),\n filter(AuthEffects.isInteractionInProgress),\n map(() => signOut()),\n ),\n );\n\n public ngrxOnInitEffects() {\n return init();\n }\n\n private static isForgotPasswordError(error: AuthError) {\n return error.errorCode === 'access_denied' && error.errorMessage.indexOf('AADB2C90118') !== -1;\n }\n\n private static isInteractionInProgress(error: AuthError) {\n return error.errorCode === BrowserAuthErrorCodes.interactionInProgress;\n }\n\n private getAuthResult(user: { sub: string } | undefined) {\n if (user) {\n return signedIn({ user });\n } else {\n return signedOut();\n }\n }\n\n private completeSignIn() {\n return this.auth.handleRedirectCallback().pipe(\n map(result => signInCompleted({ state: result.state, user: result.user })),\n catchError(error => of(signInFailed({ error }))),\n );\n }\n}\n","import { HttpHandler, HttpInterceptor, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { AuthService } from './auth.service';\n\n@Injectable()\nexport class JwtInterceptor implements HttpInterceptor {\n public intercept(request: HttpRequest<any>, next: HttpHandler) {\n return jwtInterceptor(request, next.handle);\n }\n}\n\nexport const jwtInterceptor: HttpInterceptorFn = (request, next) => {\n if (isSameDomain(request)) {\n return inject(AuthService)\n .getAccessToken()\n .pipe(\n map(token => request.clone({ setHeaders: { Authorization: `Bearer ${token}` } })),\n mergeMap(authorizedRequest => next(authorizedRequest)),\n );\n } else {\n return next(request);\n }\n};\n\nfunction isSameDomain(request: HttpRequest<any>) {\n const isAbsolute = /^https?:\\/\\//i.test(request.url);\n\n return !isAbsolute;\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { AuthConfig } from './auth-config';\nimport { AuthEffects } from './auth.effects';\nimport { authFeature } from './auth.reducer';\nimport { JwtInterceptor } from './jwt.interceptor';\n\n@NgModule({\n declarations: [],\n imports: [StoreModule.forFeature(authFeature), EffectsModule.forFeature([AuthEffects])],\n exports: [],\n})\nexport class AuthModule {\n public static forRoot(config: AuthConfig): ModuleWithProviders<AuthModule> {\n return {\n ngModule: AuthModule,\n providers: [\n {\n provide: AuthConfig,\n useValue: config,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true,\n },\n ],\n };\n }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { provideEffects } from '@ngrx/effects';\nimport { provideState } from '@ngrx/store';\nimport { AuthConfig } from './auth-config';\nimport { AuthEffects } from './auth.effects';\nimport { authFeature } from './auth.reducer';\n\nexport function provideAuth(config: AuthConfig) {\n const effects = provideEffects(AuthEffects);\n const state = provideState(authFeature);\n\n return makeEnvironmentProviders([\n effects,\n state,\n {\n provide: AuthConfig,\n useValue: config,\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,67 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@thecla/b2c-angular" />
5
- export * from './public-api';
1
+ import * as _ngrx_store from '@ngrx/store';
2
+ import * as rxjs from 'rxjs';
3
+ import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
4
+ import * as i0 from '@angular/core';
5
+ import { ModuleWithProviders } from '@angular/core';
6
+ import * as i2 from '@ngrx/effects';
7
+ import * as _thecla_b2c_angular from '@thecla/b2c-angular';
8
+ import { HttpInterceptorFn } from '@angular/common/http';
9
+
10
+ interface Profile {
11
+ [key: string]: any;
12
+ sub: string;
13
+ name?: string;
14
+ nickname?: string;
15
+ picture?: string;
16
+ email?: string;
17
+ }
18
+
19
+ declare const signIn: _ngrx_store.ActionCreator<"[@thecla/b2c-angular] sign-in", (props: {
20
+ returnUrl: string;
21
+ }) => {
22
+ returnUrl: string;
23
+ } & _ngrx_store.Action<"[@thecla/b2c-angular] sign-in">>;
24
+ declare const signedIn: _ngrx_store.ActionCreator<"[@thecla/b2c-angular] signed in", (props: {
25
+ user: Profile;
26
+ }) => {
27
+ user: Profile;
28
+ } & _ngrx_store.Action<"[@thecla/b2c-angular] signed in">>;
29
+ declare const signOut: _ngrx_store.ActionCreator<"[@thecla/b2c-angular] sign out", () => _ngrx_store.Action<"[@thecla/b2c-angular] sign out">>;
30
+ declare const signedOut: _ngrx_store.ActionCreator<"[@thecla/b2c-angular] signed out", () => _ngrx_store.Action<"[@thecla/b2c-angular] signed out">>;
31
+
32
+ declare class AuthGuard implements CanActivate {
33
+ private readonly store;
34
+ private readonly authenticated$;
35
+ canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): rxjs.Observable<boolean>;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthGuard, never>;
37
+ static ɵprov: i0.ɵɵInjectableDeclaration<AuthGuard>;
38
+ }
39
+
40
+ declare abstract class AuthConfig {
41
+ abstract clientId: string;
42
+ abstract authority: string;
43
+ abstract signInPolicy: string;
44
+ abstract resetPasswordPolicy: string;
45
+ abstract knownAuthorities: string[];
46
+ abstract scopes: string[];
47
+ abstract redirectUri?: string;
48
+ }
49
+
50
+ declare class AuthModule {
51
+ static forRoot(config: AuthConfig): ModuleWithProviders<AuthModule>;
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthModule, never>;
53
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AuthModule, never, [typeof _ngrx_store.StoreFeatureModule, typeof i2.EffectsFeatureModule], never>;
54
+ static ɵinj: i0.ɵɵInjectorDeclaration<AuthModule>;
55
+ }
56
+
57
+ declare const isAuthenticated: rxjs.UnaryFunction<rxjs.Observable<Record<string, any>>, rxjs.Observable<boolean>>;
58
+ declare const getUser: rxjs.UnaryFunction<rxjs.Observable<Record<string, any>>, rxjs.Observable<_thecla_b2c_angular.Profile | undefined>>;
59
+ declare function getUserSignal(): i0.Signal<_thecla_b2c_angular.Profile | undefined>;
60
+ declare function getIsAuthenticatedSignal(): i0.Signal<boolean | undefined>;
61
+
62
+ declare const jwtInterceptor: HttpInterceptorFn;
63
+
64
+ declare function provideAuth(config: AuthConfig): i0.EnvironmentProviders;
65
+
66
+ export { AuthGuard, AuthModule, getIsAuthenticatedSignal, getUser, getUserSignal, isAuthenticated, jwtInterceptor, provideAuth, signIn, signOut, signedIn, signedOut };
67
+ export type { Profile };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thecla/b2c-angular",
3
- "version": "10.0.0",
3
+ "version": "10.2.0",
4
4
  "author": "Hendrik Wouters",
5
5
  "description": "Angular module using NGRX to authenticate with Azure AD B2C",
6
6
  "repository": {
@@ -19,13 +19,13 @@
19
19
  },
20
20
  "homepage": "https://github.com/hwouters/auth0-angular#readme",
21
21
  "peerDependencies": {
22
- "@angular/common": "^18.0.0",
23
- "@angular/core": "^18.0.0",
24
- "@angular/router": "^18.0.0",
22
+ "@angular/common": ">=18.0.0",
23
+ "@angular/core": ">=18.0.0",
24
+ "@angular/router": ">=18.0.0",
25
25
  "@azure/msal-browser": "^3.14.0",
26
- "@ngrx/effects": "^18.0.0",
27
- "@ngrx/operators": "^18.0.0",
28
- "@ngrx/store": "^18.0.0"
26
+ "@ngrx/effects": ">=18.0.0",
27
+ "@ngrx/operators": ">=18.0.0",
28
+ "@ngrx/store": ">=18.0.0"
29
29
  },
30
30
  "dependencies": {
31
31
  "tslib": "^2.0.0"
@@ -38,8 +38,6 @@
38
38
  },
39
39
  ".": {
40
40
  "types": "./index.d.ts",
41
- "esm2022": "./esm2022/thecla-b2c-angular.mjs",
42
- "esm": "./esm2022/thecla-b2c-angular.mjs",
43
41
  "default": "./fesm2022/thecla-b2c-angular.mjs"
44
42
  }
45
43
  },
@@ -1,3 +0,0 @@
1
- export class AuthConfig {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iMmMtYW5ndWxhci9zcmMvbGliL2F1dGgtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsVUFBVTtDQVEvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoQ29uZmlnIHtcbiAgcHVibGljIGFic3RyYWN0IGNsaWVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBhdXRob3JpdHk6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHNpZ25JblBvbGljeTogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVzZXRQYXNzd29yZFBvbGljeTogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3Qga25vd25BdXRob3JpdGllczogc3RyaW5nW107XG4gIHB1YmxpYyBhYnN0cmFjdCBzY29wZXM6IHN0cmluZ1tdO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVkaXJlY3RVcmk/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,11 +0,0 @@
1
- import { createAction, props } from '@ngrx/store';
2
- export const init = createAction('[@thecla/b2c-angular] init');
3
- export const signIn = createAction('[@thecla/b2c-angular] sign-in', props());
4
- export const signInRedirected = createAction('[@thecla/b2c-angular] sign in redirected');
5
- export const signInCompleted = createAction('[@thecla/b2c-angular] sign in completed', props());
6
- export const signedIn = createAction('[@thecla/b2c-angular] signed in', props());
7
- export const signInFailed = createAction('[@thecla/b2c-angular] sign in failed', props());
8
- export const signOut = createAction('[@thecla/b2c-angular] sign out');
9
- export const signedOut = createAction('[@thecla/b2c-angular] signed out');
10
- export const resetPassword = createAction('[@thecla/b2c-angular] reset password', props());
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYjJjLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbEQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBRS9ELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsK0JBQStCLEVBQUUsS0FBSyxFQUF5QixDQUFDLENBQUM7QUFFcEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFFekYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FDekMseUNBQXlDLEVBQ3pDLEtBQUssRUFBd0UsQ0FDOUUsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxFQUFxQixDQUFDLENBQUM7QUFFcEcsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLEVBQW9CLENBQUMsQ0FBQztBQUU1RyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxFQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUHJvZmlsZSB9IGZyb20gJy4vYXV0aC5yZWR1Y2VyJztcblxuZXhwb3J0IGNvbnN0IGluaXQgPSBjcmVhdGVBY3Rpb24oJ1tAdGhlY2xhL2IyYy1hbmd1bGFyXSBpbml0Jyk7XG5cbmV4cG9ydCBjb25zdCBzaWduSW4gPSBjcmVhdGVBY3Rpb24oJ1tAdGhlY2xhL2IyYy1hbmd1bGFyXSBzaWduLWluJywgcHJvcHM8eyByZXR1cm5Vcmw6IHN0cmluZyB9PigpKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25JblJlZGlyZWN0ZWQgPSBjcmVhdGVBY3Rpb24oJ1tAdGhlY2xhL2IyYy1hbmd1bGFyXSBzaWduIGluIHJlZGlyZWN0ZWQnKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25JbkNvbXBsZXRlZCA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tAdGhlY2xhL2IyYy1hbmd1bGFyXSBzaWduIGluIGNvbXBsZXRlZCcsXG4gIHByb3BzPHsgc3RhdGU6IHsgdGFyZ2V0OiBzdHJpbmc7IHBhc3N3b3JkUmVzZXQ6IGJvb2xlYW4gfTsgdXNlcjogUHJvZmlsZSB9PigpLFxuKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25lZEluID0gY3JlYXRlQWN0aW9uKCdbQHRoZWNsYS9iMmMtYW5ndWxhcl0gc2lnbmVkIGluJywgcHJvcHM8eyB1c2VyOiBQcm9maWxlIH0+KCkpO1xuXG5leHBvcnQgY29uc3Qgc2lnbkluRmFpbGVkID0gY3JlYXRlQWN0aW9uKCdbQHRoZWNsYS9iMmMtYW5ndWxhcl0gc2lnbiBpbiBmYWlsZWQnLCBwcm9wczx7IGVycm9yOiBFcnJvciB9PigpKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25PdXQgPSBjcmVhdGVBY3Rpb24oJ1tAdGhlY2xhL2IyYy1hbmd1bGFyXSBzaWduIG91dCcpO1xuXG5leHBvcnQgY29uc3Qgc2lnbmVkT3V0ID0gY3JlYXRlQWN0aW9uKCdbQHRoZWNsYS9iMmMtYW5ndWxhcl0gc2lnbmVkIG91dCcpO1xuXG5leHBvcnQgY29uc3QgcmVzZXRQYXNzd29yZCA9IGNyZWF0ZUFjdGlvbignW0B0aGVjbGEvYjJjLWFuZ3VsYXJdIHJlc2V0IHBhc3N3b3JkJywgcHJvcHM8eyByZXR1cm5Vcmw6IHN0cmluZyB9PigpKTtcbiJdfQ==
@@ -1,62 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { AuthError, BrowserAuthErrorCodes } from '@azure/msal-browser';
4
- import { Actions, createEffect, ofType } from '@ngrx/effects';
5
- import { of } from 'rxjs';
6
- import { catchError, filter, map, switchMap } from 'rxjs/operators';
7
- import { init, resetPassword, signIn, signInCompleted, signInFailed, signInRedirected, signOut, signedIn, signedOut, } from './auth.actions';
8
- import { AuthService } from './auth.service';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@ngrx/effects";
11
- import * as i2 from "./auth.service";
12
- import * as i3 from "@angular/router";
13
- export class AuthEffects {
14
- constructor(actions$, auth, router) {
15
- this.actions$ = actions$;
16
- this.auth = auth;
17
- this.router = router;
18
- this.signIn$ = createEffect(() => this.actions$.pipe(ofType(signIn), switchMap(action => this.auth.loginWithRedirect({ target: action.returnUrl }).pipe(map(() => signInRedirected()), catchError(error => of(signInFailed({ error })))))));
19
- this.passwordReset$ = createEffect(() => this.actions$.pipe(ofType(resetPassword), switchMap(action => this.auth.resetPasswordWithRedirect({ target: action.returnUrl }).pipe(map(() => signInRedirected()), catchError(error => of(signInFailed({ error })))))));
20
- this.signInCompleted$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), map(({ state, user }) => (state.passwordReset ? signOut() : signedIn({ user })))));
21
- this.redirect$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(action => this.router.navigateByUrl(action.state.target, { replaceUrl: true }))), { dispatch: false });
22
- this.signOut$ = createEffect(() => this.actions$.pipe(ofType(signOut), switchMap(_ => this.auth.logout().pipe(map(() => signedOut()), catchError(() => of(signedOut()))))));
23
- this.init$ = createEffect(() => this.actions$.pipe(ofType(init), switchMap(() => {
24
- const params = window.location.hash;
25
- if ((params.includes('code=') && params.includes('state=')) ||
26
- (params.includes('error=') && params.includes('error_description='))) {
27
- return this.completeSignIn();
28
- }
29
- else {
30
- return this.auth.checkSession().pipe(map(user => this.getAuthResult(user)), catchError(error => of(signInFailed({ error }))));
31
- }
32
- })));
33
- this.resetPassword$ = createEffect(() => this.actions$.pipe(ofType(signInFailed), filter(action => action.error instanceof AuthError), map(action => action.error), filter(AuthEffects.isForgotPasswordError), map(() => resetPassword({ returnUrl: '/' }))));
34
- this.failed$ = createEffect(() => this.actions$.pipe(ofType(signInFailed), filter(action => action.error instanceof AuthError), map(action => action.error), filter(AuthEffects.isInteractionInProgress), map(() => signOut())));
35
- }
36
- ngrxOnInitEffects() {
37
- return init();
38
- }
39
- static isForgotPasswordError(error) {
40
- return error.errorCode === 'access_denied' && error.errorMessage.indexOf('AADB2C90118') !== -1;
41
- }
42
- static isInteractionInProgress(error) {
43
- return error.errorCode === BrowserAuthErrorCodes.interactionInProgress;
44
- }
45
- getAuthResult(user) {
46
- if (user) {
47
- return signedIn({ user });
48
- }
49
- else {
50
- return signedOut();
51
- }
52
- }
53
- completeSignIn() {
54
- return this.auth.handleRedirectCallback().pipe(map(result => signInCompleted({ state: result.state, user: result.user })), catchError(error => of(signInFailed({ error }))));
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthEffects, deps: [{ token: i1.Actions }, { token: i2.AuthService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
57
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthEffects }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthEffects, decorators: [{
60
- type: Injectable
61
- }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.AuthService }, { type: i3.Router }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYjJjLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUNMLElBQUksRUFDSixhQUFhLEVBQ2IsTUFBTSxFQUNOLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUc3QyxNQUFNLE9BQU8sV0FBVztJQThGdEIsWUFDbUIsUUFBaUIsRUFDakIsSUFBaUIsRUFDakIsTUFBYztRQUZkLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBaEdqQixZQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUNkLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxD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bnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEF1dGhFcnJvciwgQnJvd3NlckF1dGhFcnJvckNvZGVzIH0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XG5pbXBvcnQgeyBBY3Rpb25zLCBPbkluaXRFZmZlY3RzLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBpbml0LFxuICByZXNldFBhc3N3b3JkLFxuICBzaWduSW4sXG4gIHNpZ25JbkNvbXBsZXRlZCxcbiAgc2lnbkluRmFpbGVkLFxuICBzaWduSW5SZWRpcmVjdGVkLFxuICBzaWduT3V0LFxuICBzaWduZWRJbixcbiAgc2lnbmVkT3V0LFxufSBmcm9tICcuL2F1dGguYWN0aW9ucyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhFZmZlY3RzIGltcGxlbWVudHMgT25Jbml0RWZmZWN0cyB7XG4gIHB1YmxpYyByZWFkb25seSBzaWduSW4kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHNpZ25JbiksXG4gICAgICBzd2l0Y2hNYXAoYWN0aW9uID0+XG4gICAgICAgIHRoaXMuYXV0aC5sb2dpbldpdGhSZWRpcmVjdCh7IHRhcmdldDogYWN0aW9uLnJldHVyblVybCB9KS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBzaWduSW5SZWRpcmVjdGVkKCkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gb2Yoc2lnbkluRmFpbGVkKHsgZXJyb3IgfSkpKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGFzc3dvcmRSZXNldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUocmVzZXRQYXNzd29yZCksXG4gICAgICBzd2l0Y2hNYXAoYWN0aW9uID0+XG4gICAgICAgIHRoaXMuYXV0aC5yZXNldFBhc3N3b3JkV2l0aFJlZGlyZWN0KHsgdGFyZ2V0OiBhY3Rpb24ucmV0dXJuVXJsIH0pLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHNpZ25JblJlZGlyZWN0ZWQoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihzaWduSW5GYWlsZWQoeyBlcnJvciB9KSkpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaWduSW5Db21wbGV0ZWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHNpZ25JbkNvbXBsZXRlZCksXG4gICAgICBtYXAoKHsgc3RhdGUsIHVzZXIgfSkgPT4gKHN0YXRlLnBhc3N3b3JkUmVzZXQgPyBzaWduT3V0KCkgOiBzaWduZWRJbih7IHVzZXIgfSkpKSxcbiAgICApLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSByZWRpcmVjdCQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKHNpZ25JbkNvbXBsZXRlZCksXG4gICAgICAgIHN3aXRjaE1hcChhY3Rpb24gPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChhY3Rpb24uc3RhdGUudGFyZ2V0LCB7IHJlcGxhY2VVcmw6IHRydWUgfSkpLFxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9LFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaWduT3V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShzaWduT3V0KSxcbiAgICAgIHN3aXRjaE1hcChfID0+XG4gICAgICAgIHRoaXMuYXV0aC5sb2dvdXQoKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBzaWduZWRPdXQoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihzaWduZWRPdXQoKSkpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBpbml0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShpbml0KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAocGFyYW1zLmluY2x1ZGVzKCdjb2RlPScpICYmIHBhcmFtcy5pbmNsdWRlcygnc3RhdGU9JykpIHx8XG4gICAgICAgICAgKHBhcmFtcy5pbmNsdWRlcygnZXJyb3I9JykgJiYgcGFyYW1zLmluY2x1ZGVzKCdlcnJvcl9kZXNjcmlwdGlvbj0nKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGVTaWduSW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoLmNoZWNrU2Vzc2lvbigpLnBpcGUoXG4gICAgICAgICAgICBtYXAodXNlciA9PiB0aGlzLmdldEF1dGhSZXN1bHQodXNlcikpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihzaWduSW5GYWlsZWQoeyBlcnJvciB9KSkpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICksXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc2V0UGFzc3dvcmQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHNpZ25JbkZhaWxlZCksXG4gICAgICBmaWx0ZXIoYWN0aW9uID0+IGFjdGlvbi5lcnJvciBpbnN0YW5jZW9mIEF1dGhFcnJvciksXG4gICAgICBtYXAoYWN0aW9uID0+IGFjdGlvbi5lcnJvciBhcyBBdXRoRXJyb3IpLFxuICAgICAgZmlsdGVyKEF1dGhFZmZlY3RzLmlzRm9yZ290UGFzc3dvcmRFcnJvciksXG4gICAgICBtYXAoKCkgPT4gcmVzZXRQYXNzd29yZCh7IHJldHVyblVybDogJy8nIH0pKSxcbiAgICApLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBmYWlsZWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHNpZ25JbkZhaWxlZCksXG4gICAgICBmaWx0ZXIoYWN0aW9uID0+IGFjdGlvbi5lcnJvciBpbnN0YW5jZW9mIEF1dGhFcnJvciksXG4gICAgICBtYXAoYWN0aW9uID0+IGFjdGlvbi5lcnJvciBhcyBBdXRoRXJyb3IpLFxuICAgICAgZmlsdGVyKEF1dGhFZmZlY3RzLmlzSW50ZXJhY3Rpb25JblByb2dyZXNzKSxcbiAgICAgIG1hcCgoKSA9PiBzaWduT3V0KCkpLFxuICAgICksXG4gICk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICApIHt9XG5cbiAgcHVibGljIG5ncnhPbkluaXRFZmZlY3RzKCkge1xuICAgIHJldHVybiBpbml0KCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0ZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyb3I6IEF1dGhFcnJvcikge1xuICAgIHJldHVybiBlcnJvci5lcnJvckNvZGUgPT09ICdhY2Nlc3NfZGVuaWVkJyAmJiBlcnJvci5lcnJvck1lc3NhZ2UuaW5kZXhPZignQUFEQjJDOTAxMTgnKSAhPT0gLTE7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0ludGVyYWN0aW9uSW5Qcm9ncmVzcyhlcnJvcjogQXV0aEVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yLmVycm9yQ29kZSA9PT0gQnJvd3NlckF1dGhFcnJvckNvZGVzLmludGVyYWN0aW9uSW5Qcm9ncmVzcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0aFJlc3VsdCh1c2VyOiB7IHN1Yjogc3RyaW5nIH0gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodXNlcikge1xuICAgICAgcmV0dXJuIHNpZ25lZEluKHsgdXNlciB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNpZ25lZE91dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcGxldGVTaWduSW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aC5oYW5kbGVSZWRpcmVjdENhbGxiYWNrKCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gc2lnbkluQ29tcGxldGVkKHsgc3RhdGU6IHJlc3VsdC5zdGF0ZSwgdXNlcjogcmVzdWx0LnVzZXIgfSkpLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihzaWduSW5GYWlsZWQoeyBlcnJvciB9KSkpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,29 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Store } from '@ngrx/store';
3
- import { first, tap } from 'rxjs/operators';
4
- import { signIn } from './auth.actions';
5
- import { isAuthenticated } from './auth.selectors';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ngrx/store";
8
- export class AuthGuard {
9
- constructor(store) {
10
- this.store = store;
11
- this.authenticated$ = this.store.pipe(isAuthenticated);
12
- }
13
- canActivate(next, state) {
14
- return this.authenticated$.pipe(tap(auth => {
15
- if (!auth) {
16
- this.store.dispatch(signIn({ returnUrl: state.url }));
17
- }
18
- }), first());
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthGuard, decorators: [{
24
- type: Injectable,
25
- args: [{
26
- providedIn: 'root',
27
- }]
28
- }], ctorParameters: () => [{ type: i1.Store }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2IyYy1hbmd1bGFyL3NyYy9saWIvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFLbkQsTUFBTSxPQUFPLFNBQVM7SUFHcEIsWUFBb0MsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFGL0IsbUJBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVoQixDQUFDO0lBRTdDLFdBQVcsQ0FBQyxJQUE0QixFQUFFLEtBQTBCO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxFQUFFLENBQ1IsQ0FBQztJQUNKLENBQUM7OEdBZFUsU0FBUztrSEFBVCxTQUFTLGNBRlIsTUFBTTs7MkZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBzaWduSW4gfSBmcm9tICcuL2F1dGguYWN0aW9ucyc7XG5pbXBvcnQgeyBpc0F1dGhlbnRpY2F0ZWQgfSBmcm9tICcuL2F1dGguc2VsZWN0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGVkJCA9IHRoaXMuc3RvcmUucGlwZShpc0F1dGhlbnRpY2F0ZWQpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZSkge31cblxuICBwdWJsaWMgY2FuQWN0aXZhdGUobmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkJC5waXBlKFxuICAgICAgdGFwKGF1dGggPT4ge1xuICAgICAgICBpZiAoIWF1dGgpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNpZ25Jbih7IHJldHVyblVybDogc3RhdGUudXJsIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaXJzdCgpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { HTTP_INTERCEPTORS } from '@angular/common/http';
2
- import { NgModule } from '@angular/core';
3
- import { EffectsModule } from '@ngrx/effects';
4
- import { StoreModule } from '@ngrx/store';
5
- import { AuthConfig } from './auth-config';
6
- import { AuthEffects } from './auth.effects';
7
- import { authFeature } from './auth.reducer';
8
- import { JwtInterceptor } from './jwt.interceptor';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@ngrx/store";
11
- import * as i2 from "@ngrx/effects";
12
- export class AuthModule {
13
- static forRoot(config) {
14
- return {
15
- ngModule: AuthModule,
16
- providers: [
17
- {
18
- provide: AuthConfig,
19
- useValue: config,
20
- },
21
- {
22
- provide: HTTP_INTERCEPTORS,
23
- useClass: JwtInterceptor,
24
- multi: true,
25
- },
26
- ],
27
- };
28
- }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
30
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, imports: [i1.StoreFeatureModule, i2.EffectsFeatureModule] }); }
31
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, imports: [StoreModule.forFeature(authFeature), EffectsModule.forFeature([AuthEffects])] }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthModule, decorators: [{
34
- type: NgModule,
35
- args: [{
36
- declarations: [],
37
- imports: [StoreModule.forFeature(authFeature), EffectsModule.forFeature([AuthEffects])],
38
- exports: [],
39
- }]
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iMmMtYW5ndWxhci9zcmMvbGliL2F1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBT25ELE1BQU0sT0FBTyxVQUFVO0lBQ2QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFrQjtRQUN0QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLFVBQVU7WUFDcEIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxVQUFVO29CQUNuQixRQUFRLEVBQUUsTUFBTTtpQkFDakI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs4R0FoQlUsVUFBVTsrR0FBVixVQUFVOytHQUFWLFVBQVUsWUFIWCxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7MkZBRzNFLFVBQVU7a0JBTHRCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZGLE9BQU8sRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWZmZWN0c01vZHVsZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmVNb2R1bGUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLWNvbmZpZyc7XG5pbXBvcnQgeyBBdXRoRWZmZWN0cyB9IGZyb20gJy4vYXV0aC5lZmZlY3RzJztcbmltcG9ydCB7IGF1dGhGZWF0dXJlIH0gZnJvbSAnLi9hdXRoLnJlZHVjZXInO1xuaW1wb3J0IHsgSnd0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2p3dC5pbnRlcmNlcHRvcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKGF1dGhGZWF0dXJlKSwgRWZmZWN0c01vZHVsZS5mb3JGZWF0dXJlKFtBdXRoRWZmZWN0c10pXSxcbiAgZXhwb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnOiBBdXRoQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBdXRoTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBdXRoQ29uZmlnLFxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgICAgICB1c2VDbGFzczogSnd0SW50ZXJjZXB0b3IsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,23 +0,0 @@
1
- import { createFeature, createReducer, on } from '@ngrx/store';
2
- import { signInFailed, signedIn, signedOut } from './auth.actions';
3
- export const noAuthentication = {
4
- authenticating: false,
5
- authenticated: false,
6
- user: undefined,
7
- };
8
- export const startAuthentication = {
9
- authenticating: true,
10
- authenticated: false,
11
- user: undefined,
12
- };
13
- export const authFeature = createFeature({
14
- name: 'auth',
15
- reducer: createReducer(startAuthentication, on(signedIn, (state, { user }) => ({
16
- ...state,
17
- authenticating: false,
18
- authenticated: true,
19
- user,
20
- })), on(signedOut, _ => noAuthentication), on(signInFailed, _ => noAuthentication)),
21
- });
22
- export const { selectAuthState, reducer } = authFeature;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYjJjLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBaUJuRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBVTtJQUNyQyxjQUFjLEVBQUUsS0FBSztJQUNyQixhQUFhLEVBQUUsS0FBSztJQUNwQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQVU7SUFDeEMsY0FBYyxFQUFFLElBQUk7SUFDcEIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7SUFDdkMsSUFBSSxFQUFFLE1BQU07SUFDWixPQUFPLEVBQUUsYUFBYSxDQUNwQixtQkFBbUIsRUFDbkIsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLEdBQUcsS0FBSztRQUNSLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLElBQUk7S0FDTCxDQUFDLENBQUMsRUFDSCxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFDcEMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQ3hDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRmVhdHVyZSwgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBzaWduSW5GYWlsZWQsIHNpZ25lZEluLCBzaWduZWRPdXQgfSBmcm9tICcuL2F1dGguYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZSB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbiAgc3ViOiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIG5pY2tuYW1lPzogc3RyaW5nO1xuICBwaWN0dXJlPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gIGF1dGhlbnRpY2F0aW5nOiBib29sZWFuO1xuICBhdXRoZW50aWNhdGVkOiBib29sZWFuO1xuICB1c2VyOiBQcm9maWxlIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3Qgbm9BdXRoZW50aWNhdGlvbjogU3RhdGUgPSB7XG4gIGF1dGhlbnRpY2F0aW5nOiBmYWxzZSxcbiAgYXV0aGVudGljYXRlZDogZmFsc2UsXG4gIHVzZXI6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBjb25zdCBzdGFydEF1dGhlbnRpY2F0aW9uOiBTdGF0ZSA9IHtcbiAgYXV0aGVudGljYXRpbmc6IHRydWUsXG4gIGF1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuICB1c2VyOiB1bmRlZmluZWQsXG59O1xuXG5leHBvcnQgY29uc3QgYXV0aEZlYXR1cmUgPSBjcmVhdGVGZWF0dXJlKHtcbiAgbmFtZTogJ2F1dGgnLFxuICByZWR1Y2VyOiBjcmVhdGVSZWR1Y2VyKFxuICAgIHN0YXJ0QXV0aGVudGljYXRpb24sXG4gICAgb24oc2lnbmVkSW4sIChzdGF0ZSwgeyB1c2VyIH0pID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGF1dGhlbnRpY2F0aW5nOiBmYWxzZSxcbiAgICAgIGF1dGhlbnRpY2F0ZWQ6IHRydWUsXG4gICAgICB1c2VyLFxuICAgIH0pKSxcbiAgICBvbihzaWduZWRPdXQsIF8gPT4gbm9BdXRoZW50aWNhdGlvbiksXG4gICAgb24oc2lnbkluRmFpbGVkLCBfID0+IG5vQXV0aGVudGljYXRpb24pLFxuICApLFxufSk7XG5cbmV4cG9ydCBjb25zdCB7IHNlbGVjdEF1dGhTdGF0ZSwgcmVkdWNlciB9ID0gYXV0aEZlYXR1cmU7XG4iXX0=
@@ -1,15 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { toSignal } from '@angular/core/rxjs-interop';
3
- import { Store, select } from '@ngrx/store';
4
- import { pipe } from 'rxjs';
5
- import { filter, map } from 'rxjs/operators';
6
- import { selectAuthState } from './auth.reducer';
7
- export const isAuthenticated = pipe(select(selectAuthState), filter(state => !state.authenticating), map(state => state.authenticated));
8
- export const getUser = pipe(select(selectAuthState), filter(state => !state.authenticating), map(state => state.user));
9
- export function getUserSignal() {
10
- return toSignal(inject(Store).pipe(getUser));
11
- }
12
- export function getIsAuthenticatedSignal() {
13
- return toSignal(inject(Store).pipe(isAuthenticated));
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iMmMtYW5ndWxhci9zcmMvbGliL2F1dGguc2VsZWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FDakMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUN2QixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFDdEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUNsQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FDekIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUN2QixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFDdEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUN6QixDQUFDO0FBRUYsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCO0lBQ3RDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFN0b3JlLCBzZWxlY3QgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNlbGVjdEF1dGhTdGF0ZSB9IGZyb20gJy4vYXV0aC5yZWR1Y2VyJztcblxuZXhwb3J0IGNvbnN0IGlzQXV0aGVudGljYXRlZCA9IHBpcGUoXG4gIHNlbGVjdChzZWxlY3RBdXRoU3RhdGUpLFxuICBmaWx0ZXIoc3RhdGUgPT4gIXN0YXRlLmF1dGhlbnRpY2F0aW5nKSxcbiAgbWFwKHN0YXRlID0+IHN0YXRlLmF1dGhlbnRpY2F0ZWQpLFxuKTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXIgPSBwaXBlKFxuICBzZWxlY3Qoc2VsZWN0QXV0aFN0YXRlKSxcbiAgZmlsdGVyKHN0YXRlID0+ICFzdGF0ZS5hdXRoZW50aWNhdGluZyksXG4gIG1hcChzdGF0ZSA9PiBzdGF0ZS51c2VyKSxcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyU2lnbmFsKCkge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0KFN0b3JlKS5waXBlKGdldFVzZXIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElzQXV0aGVudGljYXRlZFNpZ25hbCgpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdChTdG9yZSkucGlwZShpc0F1dGhlbnRpY2F0ZWQpKTtcbn1cbiJdfQ==
@@ -1,68 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { InteractionRequiredAuthError, PublicClientApplication, } from '@azure/msal-browser';
3
- import { from, of, throwError } from 'rxjs';
4
- import { catchError, filter, map } from 'rxjs/operators';
5
- import { AuthConfig } from './auth-config';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./auth-config";
8
- export class AuthService {
9
- constructor(config) {
10
- this.config = config;
11
- const msalConfig = {
12
- auth: {
13
- clientId: config.clientId,
14
- authority: `${config.authority}/${config.signInPolicy}`,
15
- knownAuthorities: config.knownAuthorities,
16
- redirectUri: config.redirectUri ?? location.origin,
17
- },
18
- };
19
- this.clientApplication = new PublicClientApplication(msalConfig);
20
- }
21
- loginWithRedirect(state) {
22
- return from(this.clientApplication.loginRedirect({
23
- scopes: this.config.scopes,
24
- state: JSON.stringify({ ...state, passwordReset: false }),
25
- }));
26
- }
27
- resetPasswordWithRedirect(state) {
28
- return from(this.clientApplication.loginRedirect({
29
- authority: `${this.config.authority}/${this.config.resetPasswordPolicy}`,
30
- scopes: this.config.scopes,
31
- state: JSON.stringify({ ...state, passwordReset: true }),
32
- prompt: 'login',
33
- }));
34
- }
35
- handleRedirectCallback() {
36
- return from(this.clientApplication.handleRedirectPromise()).pipe(filter((result) => result !== null), map(result => ({
37
- state: result.state ? JSON.parse(result.state) : undefined,
38
- user: { sub: result.uniqueId, ...result.idTokenClaims },
39
- })));
40
- }
41
- getAccessToken() {
42
- const account = this.clientApplication.getAllAccounts()[0];
43
- const scopes = this.config.scopes;
44
- return from(this.clientApplication.acquireTokenSilent({ account, scopes })).pipe(map(result => result.accessToken));
45
- }
46
- logout() {
47
- return from(this.clientApplication.logoutRedirect({ postLogoutRedirectUri: location.origin }));
48
- }
49
- checkSession() {
50
- const accounts = this.clientApplication.getAllAccounts();
51
- const scopes = this.config.scopes;
52
- if (accounts.length === 1) {
53
- return from(this.clientApplication.acquireTokenSilent({ account: accounts[0], scopes })).pipe(map(result => ({ sub: result.uniqueId, ...result.idTokenClaims })), catchError(error => (error instanceof InteractionRequiredAuthError ? of(undefined) : throwError(error))));
54
- }
55
- else {
56
- return of(undefined);
57
- }
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthService, deps: [{ token: i1.AuthConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
60
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthService, providedIn: 'root' }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthService, decorators: [{
63
- type: Injectable,
64
- args: [{
65
- providedIn: 'root',
66
- }]
67
- }], ctorParameters: () => [{ type: i1.AuthConfig }] });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYjJjLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsNEJBQTRCLEVBQzVCLHVCQUF1QixHQUN4QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFBb0MsTUFBa0I7UUFBbEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNwRCxNQUFNLFVBQVUsR0FBa0I7WUFDaEMsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtnQkFDekIsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUN2RCxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO2dCQUN6QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsTUFBTTthQUNuRDtTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBeUI7UUFDaEQsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztZQUNuQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFN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QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3pHLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDOzhHQXJFVSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhlbnRpY2F0aW9uUmVzdWx0LFxuICBDb25maWd1cmF0aW9uLFxuICBJbnRlcmFjdGlvblJlcXVpcmVkQXV0aEVycm9yLFxuICBQdWJsaWNDbGllbnRBcHBsaWNhdGlvbixcbn0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XG5pbXBvcnQgeyBmcm9tLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50QXBwbGljYXRpb246IFB1YmxpY0NsaWVudEFwcGxpY2F0aW9uO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogQXV0aENvbmZpZykge1xuICAgIGNvbnN0IG1zYWxDb25maWc6IENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBhdXRoOiB7XG4gICAgICAgIGNsaWVudElkOiBjb25maWcuY2xpZW50SWQsXG4gICAgICAgIGF1dGhvcml0eTogYCR7Y29uZmlnLmF1dGhvcml0eX0vJHtjb25maWcuc2lnbkluUG9saWN5fWAsXG4gICAgICAgIGtub3duQXV0aG9yaXRpZXM6IGNvbmZpZy5rbm93bkF1dGhvcml0aWVzLFxuICAgICAgICByZWRpcmVjdFVyaTogY29uZmlnLnJlZGlyZWN0VXJpID8/IGxvY2F0aW9uLm9yaWdpbixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMuY2xpZW50QXBwbGljYXRpb24gPSBuZXcgUHVibGljQ2xpZW50QXBwbGljYXRpb24obXNhbENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgbG9naW5XaXRoUmVkaXJlY3Qoc3RhdGU6IHsgdGFyZ2V0OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5jbGllbnRBcHBsaWNhdGlvbi5sb2dpblJlZGlyZWN0KHtcbiAgICAgICAgc2NvcGVzOiB0aGlzLmNvbmZpZy5zY29wZXMsXG4gICAgICAgIHN0YXRlOiBKU09OLnN0cmluZ2lmeSh7IC4uLnN0YXRlLCBwYXNzd29yZFJlc2V0OiBmYWxzZSB9KSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRQYXNzd29yZFdpdGhSZWRpcmVjdChzdGF0ZTogeyB0YXJnZXQ6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLmNsaWVudEFwcGxpY2F0aW9uLmxvZ2luUmVkaXJlY3Qoe1xuICAgICAgICBhdXRob3JpdHk6IGAke3RoaXMuY29uZmlnLmF1dGhvcml0eX0vJHt0aGlzLmNvbmZpZy5yZXNldFBhc3N3b3JkUG9saWN5fWAsXG4gICAgICAgIHNjb3BlczogdGhpcy5jb25maWcuc2NvcGVzLFxuICAgICAgICBzdGF0ZTogSlNPTi5zdHJpbmdpZnkoeyAuLi5zdGF0ZSwgcGFzc3dvcmRSZXNldDogdHJ1ZSB9KSxcbiAgICAgICAgcHJvbXB0OiAnbG9naW4nLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKCkge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY2xpZW50QXBwbGljYXRpb24uaGFuZGxlUmVkaXJlY3RQcm9taXNlKCkpLnBpcGUoXG4gICAgICBmaWx0ZXIoKHJlc3VsdCk6IHJlc3VsdCBpcyBBdXRoZW50aWNhdGlvblJlc3VsdCA9PiByZXN1bHQgIT09IG51bGwpLFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICBzdGF0ZTogcmVzdWx0LnN0YXRlID8gSlNPTi5wYXJzZShyZXN1bHQuc3RhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICB1c2VyOiB7IHN1YjogcmVzdWx0LnVuaXF1ZUlkLCAuLi5yZXN1bHQuaWRUb2tlbkNsYWltcyB9LFxuICAgICAgfSkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW4oKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IHRoaXMuY2xpZW50QXBwbGljYXRpb24uZ2V0QWxsQWNjb3VudHMoKVswXTtcbiAgICBjb25zdCBzY29wZXMgPSB0aGlzLmNvbmZpZy5zY29wZXM7XG5cbiAgICByZXR1cm4gZnJvbSh0aGlzLmNsaWVudEFwcGxpY2F0aW9uLmFjcXVpcmVUb2tlblNpbGVudCh7IGFjY291bnQsIHNjb3BlcyB9KSkucGlwZShtYXAocmVzdWx0ID0+IHJlc3VsdC5hY2Nlc3NUb2tlbikpO1xuICB9XG5cbiAgcHVibGljIGxvZ291dCgpIHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNsaWVudEFwcGxpY2F0aW9uLmxvZ291dFJlZGlyZWN0KHsgcG9zdExvZ291dFJlZGlyZWN0VXJpOiBsb2NhdGlvbi5vcmlnaW4gfSkpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrU2Vzc2lvbigpIHtcbiAgICBjb25zdCBhY2NvdW50cyA9IHRoaXMuY2xpZW50QXBwbGljYXRpb24uZ2V0QWxsQWNjb3VudHMoKTtcbiAgICBjb25zdCBzY29wZXMgPSB0aGlzLmNvbmZpZy5zY29wZXM7XG5cbiAgICBpZiAoYWNjb3VudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLmNsaWVudEFwcGxpY2F0aW9uLmFjcXVpcmVUb2tlblNpbGVudCh7IGFjY291bnQ6IGFjY291bnRzWzBdLCBzY29wZXMgfSkpLnBpcGUoXG4gICAgICAgIG1hcChyZXN1bHQgPT4gKHsgc3ViOiByZXN1bHQudW5pcXVlSWQsIC4uLnJlc3VsdC5pZFRva2VuQ2xhaW1zIH0pKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiAoZXJyb3IgaW5zdGFuY2VvZiBJbnRlcmFjdGlvblJlcXVpcmVkQXV0aEVycm9yID8gb2YodW5kZWZpbmVkKSA6IHRocm93RXJyb3IoZXJyb3IpKSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,29 +0,0 @@
1
- import { inject, Injectable } from '@angular/core';
2
- import { map, mergeMap } from 'rxjs/operators';
3
- import { AuthService } from './auth.service';
4
- import * as i0 from "@angular/core";
5
- export class JwtInterceptor {
6
- intercept(request, next) {
7
- return jwtInterceptor(request, next.handle);
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: JwtInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: JwtInterceptor }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: JwtInterceptor, decorators: [{
13
- type: Injectable
14
- }] });
15
- export const jwtInterceptor = (request, next) => {
16
- if (isSameDomain(request)) {
17
- return inject(AuthService)
18
- .getAccessToken()
19
- .pipe(map(token => request.clone({ setHeaders: { Authorization: `Bearer ${token}` } })), mergeMap(authorizedRequest => next(authorizedRequest)));
20
- }
21
- else {
22
- return next(request);
23
- }
24
- };
25
- function isSameDomain(request) {
26
- const isAbsolute = /^https?:\/\//i.test(request.url);
27
- return !isAbsolute;
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYjJjLWFuZ3VsYXIvc3JjL2xpYi9qd3QuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzdDLE1BQU0sT0FBTyxjQUFjO0lBQ2xCLFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQzNELE9BQU8sY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQzs4R0FIVSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7O0FBT1gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUNqRSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQzthQUN2QixjQUFjLEVBQUU7YUFDaEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxhQUFhLEVBQUUsVUFBVSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUNqRixRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQ3ZELENBQUM7SUFDTixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixTQUFTLFlBQVksQ0FBQyxPQUF5QjtJQUM3QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyRCxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEp3dEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHVibGljIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIHJldHVybiBqd3RJbnRlcmNlcHRvcihyZXF1ZXN0LCBuZXh0LmhhbmRsZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGp3dEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXF1ZXN0LCBuZXh0KSA9PiB7XG4gIGlmIChpc1NhbWVEb21haW4ocmVxdWVzdCkpIHtcbiAgICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKVxuICAgICAgLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodG9rZW4gPT4gcmVxdWVzdC5jbG9uZSh7IHNldEhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfSB9KSksXG4gICAgICAgIG1lcmdlTWFwKGF1dGhvcml6ZWRSZXF1ZXN0ID0+IG5leHQoYXV0aG9yaXplZFJlcXVlc3QpKSxcbiAgICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5leHQocmVxdWVzdCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzU2FtZURvbWFpbihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gIGNvbnN0IGlzQWJzb2x1dGUgPSAvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHJlcXVlc3QudXJsKTtcblxuICByZXR1cm4gIWlzQWJzb2x1dGU7XG59XG4iXX0=
@@ -1,19 +0,0 @@
1
- import { makeEnvironmentProviders } from '@angular/core';
2
- import { provideEffects } from '@ngrx/effects';
3
- import { provideState } from '@ngrx/store';
4
- import { AuthConfig } from './auth-config';
5
- import { AuthEffects } from './auth.effects';
6
- import { authFeature } from './auth.reducer';
7
- export function provideAuth(config) {
8
- const effects = provideEffects(AuthEffects);
9
- const state = provideState(authFeature);
10
- return makeEnvironmentProviders([
11
- effects,
12
- state,
13
- {
14
- provide: AuthConfig,
15
- useValue: config,
16
- },
17
- ]);
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYjJjLWFuZ3VsYXIvc3JjL2xpYi9wcm92aWRlLWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFrQjtJQUM1QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsT0FBTztRQUNQLEtBQUs7UUFDTDtZQUNFLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFFBQVEsRUFBRSxNQUFNO1NBQ2pCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUVmZmVjdHMgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IHByb3ZpZGVTdGF0ZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEF1dGhDb25maWcgfSBmcm9tICcuL2F1dGgtY29uZmlnJztcbmltcG9ydCB7IEF1dGhFZmZlY3RzIH0gZnJvbSAnLi9hdXRoLmVmZmVjdHMnO1xuaW1wb3J0IHsgYXV0aEZlYXR1cmUgfSBmcm9tICcuL2F1dGgucmVkdWNlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXV0aChjb25maWc6IEF1dGhDb25maWcpIHtcbiAgY29uc3QgZWZmZWN0cyA9IHByb3ZpZGVFZmZlY3RzKEF1dGhFZmZlY3RzKTtcbiAgY29uc3Qgc3RhdGUgPSBwcm92aWRlU3RhdGUoYXV0aEZlYXR1cmUpO1xuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIGVmZmVjdHMsXG4gICAgc3RhdGUsXG4gICAge1xuICAgICAgcHJvdmlkZTogQXV0aENvbmZpZyxcbiAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgfSxcbiAgXSk7XG59XG4iXX0=
@@ -1,7 +0,0 @@
1
- export { signIn, signOut, signedIn, signedOut } from './lib/auth.actions';
2
- export { AuthGuard } from './lib/auth.guard';
3
- export { AuthModule } from './lib/auth.module';
4
- export { getIsAuthenticatedSignal, getUser, getUserSignal, isAuthenticated } from './lib/auth.selectors';
5
- export { jwtInterceptor } from './lib/jwt.interceptor';
6
- export { provideAuth } from './lib/provide-auth';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2IyYy1hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBzaWduSW4sIHNpZ25PdXQsIHNpZ25lZEluLCBzaWduZWRPdXQgfSBmcm9tICcuL2xpYi9hdXRoLmFjdGlvbnMnO1xuZXhwb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9saWIvYXV0aC5ndWFyZCc7XG5leHBvcnQgeyBBdXRoTW9kdWxlIH0gZnJvbSAnLi9saWIvYXV0aC5tb2R1bGUnO1xuZXhwb3J0IHsgUHJvZmlsZSB9IGZyb20gJy4vbGliL2F1dGgucmVkdWNlcic7XG5leHBvcnQgeyBnZXRJc0F1dGhlbnRpY2F0ZWRTaWduYWwsIGdldFVzZXIsIGdldFVzZXJTaWduYWwsIGlzQXV0aGVudGljYXRlZCB9IGZyb20gJy4vbGliL2F1dGguc2VsZWN0b3JzJztcbmV4cG9ydCB7IGp3dEludGVyY2VwdG9yIH0gZnJvbSAnLi9saWIvand0LmludGVyY2VwdG9yJztcbmV4cG9ydCB7IHByb3ZpZGVBdXRoIH0gZnJvbSAnLi9saWIvcHJvdmlkZS1hdXRoJztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlY2xhLWIyYy1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYjJjLWFuZ3VsYXIvc3JjL3RoZWNsYS1iMmMtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,9 +0,0 @@
1
- export declare abstract class AuthConfig {
2
- abstract clientId: string;
3
- abstract authority: string;
4
- abstract signInPolicy: string;
5
- abstract resetPasswordPolicy: string;
6
- abstract knownAuthorities: string[];
7
- abstract scopes: string[];
8
- abstract redirectUri?: string;
9
- }
@@ -1,38 +0,0 @@
1
- import { Profile } from './auth.reducer';
2
- export declare const init: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] init", () => import("@ngrx/store").Action<"[@thecla/b2c-angular] init">>;
3
- export declare const signIn: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] sign-in", (props: {
4
- returnUrl: string;
5
- }) => {
6
- returnUrl: string;
7
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] sign-in">>;
8
- export declare const signInRedirected: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] sign in redirected", () => import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in redirected">>;
9
- export declare const signInCompleted: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] sign in completed", (props: {
10
- state: {
11
- target: string;
12
- passwordReset: boolean;
13
- };
14
- user: Profile;
15
- }) => {
16
- state: {
17
- target: string;
18
- passwordReset: boolean;
19
- };
20
- user: Profile;
21
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in completed">>;
22
- export declare const signedIn: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] signed in", (props: {
23
- user: Profile;
24
- }) => {
25
- user: Profile;
26
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] signed in">>;
27
- export declare const signInFailed: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] sign in failed", (props: {
28
- error: Error;
29
- }) => {
30
- error: Error;
31
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in failed">>;
32
- export declare const signOut: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] sign out", () => import("@ngrx/store").Action<"[@thecla/b2c-angular] sign out">>;
33
- export declare const signedOut: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] signed out", () => import("@ngrx/store").Action<"[@thecla/b2c-angular] signed out">>;
34
- export declare const resetPassword: import("@ngrx/store").ActionCreator<"[@thecla/b2c-angular] reset password", (props: {
35
- returnUrl: string;
36
- }) => {
37
- returnUrl: string;
38
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] reset password">>;
@@ -1,43 +0,0 @@
1
- import { Router } from '@angular/router';
2
- import { Actions, OnInitEffects } from '@ngrx/effects';
3
- import { AuthService } from './auth.service';
4
- import * as i0 from "@angular/core";
5
- export declare class AuthEffects implements OnInitEffects {
6
- private readonly actions$;
7
- private readonly auth;
8
- private readonly router;
9
- readonly signIn$: import("rxjs").Observable<({
10
- error: Error;
11
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in failed">) | import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in redirected">> & import("@ngrx/effects").CreateEffectMetadata;
12
- readonly passwordReset$: import("rxjs").Observable<({
13
- error: Error;
14
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in failed">) | import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in redirected">> & import("@ngrx/effects").CreateEffectMetadata;
15
- readonly signInCompleted$: import("rxjs").Observable<({
16
- user: import("@thecla/b2c-angular").Profile;
17
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] signed in">) | import("@ngrx/store").Action<"[@thecla/b2c-angular] sign out">> & import("@ngrx/effects").CreateEffectMetadata;
18
- readonly redirect$: import("rxjs").Observable<boolean> & import("@ngrx/effects").CreateEffectMetadata;
19
- readonly signOut$: import("rxjs").Observable<import("@ngrx/store").Action<"[@thecla/b2c-angular] signed out">> & import("@ngrx/effects").CreateEffectMetadata;
20
- readonly init$: import("rxjs").Observable<({
21
- user: import("@thecla/b2c-angular").Profile;
22
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] signed in">) | import("@ngrx/store").Action<"[@thecla/b2c-angular] signed out"> | ({
23
- error: Error;
24
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in failed">) | ({
25
- state: {
26
- target: string;
27
- passwordReset: boolean;
28
- };
29
- user: import("@thecla/b2c-angular").Profile;
30
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] sign in completed">)> & import("@ngrx/effects").CreateEffectMetadata;
31
- readonly resetPassword$: import("rxjs").Observable<{
32
- returnUrl: string;
33
- } & import("@ngrx/store").Action<"[@thecla/b2c-angular] reset password">> & import("@ngrx/effects").CreateEffectMetadata;
34
- readonly failed$: import("rxjs").Observable<import("@ngrx/store").Action<"[@thecla/b2c-angular] sign out">> & import("@ngrx/effects").CreateEffectMetadata;
35
- constructor(actions$: Actions, auth: AuthService, router: Router);
36
- ngrxOnInitEffects(): import("@ngrx/store").Action<"[@thecla/b2c-angular] init">;
37
- private static isForgotPasswordError;
38
- private static isInteractionInProgress;
39
- private getAuthResult;
40
- private completeSignIn;
41
- static ɵfac: i0.ɵɵFactoryDeclaration<AuthEffects, never>;
42
- static ɵprov: i0.ɵɵInjectableDeclaration<AuthEffects>;
43
- }
@@ -1,11 +0,0 @@
1
- import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';
2
- import { Store } from '@ngrx/store';
3
- import * as i0 from "@angular/core";
4
- export declare class AuthGuard implements CanActivate {
5
- private readonly store;
6
- private readonly authenticated$;
7
- constructor(store: Store);
8
- canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): import("rxjs").Observable<boolean>;
9
- static ɵfac: i0.ɵɵFactoryDeclaration<AuthGuard, never>;
10
- static ɵprov: i0.ɵɵInjectableDeclaration<AuthGuard>;
11
- }
@@ -1,11 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { AuthConfig } from './auth-config';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ngrx/store";
5
- import * as i2 from "@ngrx/effects";
6
- export declare class AuthModule {
7
- static forRoot(config: AuthConfig): ModuleWithProviders<AuthModule>;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<AuthModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AuthModule, never, [typeof i1.StoreFeatureModule, typeof i2.EffectsFeatureModule], never>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<AuthModule>;
11
- }
@@ -1,24 +0,0 @@
1
- export interface Profile {
2
- [key: string]: any;
3
- sub: string;
4
- name?: string;
5
- nickname?: string;
6
- picture?: string;
7
- email?: string;
8
- }
9
- export interface State {
10
- authenticating: boolean;
11
- authenticated: boolean;
12
- user: Profile | undefined;
13
- }
14
- export declare const noAuthentication: State;
15
- export declare const startAuthentication: State;
16
- export declare const authFeature: {
17
- name: "auth";
18
- reducer: import("@ngrx/store").ActionReducer<State, import("@ngrx/store").Action<string>>;
19
- selectAuthState: import("@ngrx/store").MemoizedSelector<Record<string, any>, State, (featureState: State) => State>;
20
- selectUser: import("@ngrx/store").MemoizedSelector<Record<string, any>, Profile | undefined, (featureState: State) => Profile | undefined>;
21
- selectAuthenticating: import("@ngrx/store").MemoizedSelector<Record<string, any>, boolean, (featureState: State) => boolean>;
22
- selectAuthenticated: import("@ngrx/store").MemoizedSelector<Record<string, any>, boolean, (featureState: State) => boolean>;
23
- };
24
- export declare const selectAuthState: import("@ngrx/store").MemoizedSelector<Record<string, any>, State, (featureState: State) => State>, reducer: import("@ngrx/store").ActionReducer<State, import("@ngrx/store").Action<string>>;
@@ -1,4 +0,0 @@
1
- export declare const isAuthenticated: import("rxjs").UnaryFunction<import("rxjs").Observable<Record<string, any>>, import("rxjs").Observable<boolean>>;
2
- export declare const getUser: import("rxjs").UnaryFunction<import("rxjs").Observable<Record<string, any>>, import("rxjs").Observable<import("./auth.reducer").Profile | undefined>>;
3
- export declare function getUserSignal(): import("@angular/core").Signal<import("./auth.reducer").Profile | undefined>;
4
- export declare function getIsAuthenticatedSignal(): import("@angular/core").Signal<boolean | undefined>;
@@ -1,26 +0,0 @@
1
- import { AuthConfig } from './auth-config';
2
- import * as i0 from "@angular/core";
3
- export declare class AuthService {
4
- private readonly config;
5
- private readonly clientApplication;
6
- constructor(config: AuthConfig);
7
- loginWithRedirect(state: {
8
- target: string;
9
- }): import("rxjs").Observable<void>;
10
- resetPasswordWithRedirect(state: {
11
- target: string;
12
- }): import("rxjs").Observable<void>;
13
- handleRedirectCallback(): import("rxjs").Observable<{
14
- state: any;
15
- user: {
16
- sub: string;
17
- };
18
- }>;
19
- getAccessToken(): import("rxjs").Observable<string>;
20
- logout(): import("rxjs").Observable<void>;
21
- checkSession(): import("rxjs").Observable<{
22
- sub: string;
23
- } | undefined>;
24
- static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
25
- static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
26
- }
@@ -1,8 +0,0 @@
1
- import { HttpHandler, HttpInterceptor, HttpInterceptorFn, HttpRequest } from '@angular/common/http';
2
- import * as i0 from "@angular/core";
3
- export declare class JwtInterceptor implements HttpInterceptor {
4
- intercept(request: HttpRequest<any>, next: HttpHandler): import("rxjs").Observable<import("@angular/common/http").HttpEvent<unknown>>;
5
- static ɵfac: i0.ɵɵFactoryDeclaration<JwtInterceptor, never>;
6
- static ɵprov: i0.ɵɵInjectableDeclaration<JwtInterceptor>;
7
- }
8
- export declare const jwtInterceptor: HttpInterceptorFn;
@@ -1,2 +0,0 @@
1
- import { AuthConfig } from './auth-config';
2
- export declare function provideAuth(config: AuthConfig): import("@angular/core").EnvironmentProviders;
package/public-api.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export { signIn, signOut, signedIn, signedOut } from './lib/auth.actions';
2
- export { AuthGuard } from './lib/auth.guard';
3
- export { AuthModule } from './lib/auth.module';
4
- export { Profile } from './lib/auth.reducer';
5
- export { getIsAuthenticatedSignal, getUser, getUserSignal, isAuthenticated } from './lib/auth.selectors';
6
- export { jwtInterceptor } from './lib/jwt.interceptor';
7
- export { provideAuth } from './lib/provide-auth';