@thecla/auth0-angular 4.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2020/lib/actions/auth.actions.mjs +8 -0
  2. package/{esm2015/lib/auth-config.js → esm2020/lib/auth-config.mjs} +0 -0
  3. package/esm2020/lib/auth.guard.mjs +29 -0
  4. package/{esm2015/lib/auth.module.js → esm2020/lib/auth.module.mjs} +4 -4
  5. package/esm2020/lib/auth.service.mjs +52 -0
  6. package/esm2020/lib/effects/auth.effects.mjs +53 -0
  7. package/{esm2015/lib/jwt.interceptor.js → esm2020/lib/jwt.interceptor.mjs} +3 -3
  8. package/esm2020/lib/reducers/auth.reducer.mjs +20 -0
  9. package/{esm2015/lib/state/auth.state.js → esm2020/lib/state/auth.state.mjs} +0 -0
  10. package/{esm2015/lib/store/index.js → esm2020/lib/store/index.mjs} +0 -0
  11. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  12. package/{esm2015/thecla-auth0-angular.js → esm2020/thecla-auth0-angular.mjs} +0 -0
  13. package/fesm2015/{thecla-auth0-angular.js → thecla-auth0-angular.mjs} +28 -31
  14. package/fesm2015/thecla-auth0-angular.mjs.map +1 -0
  15. package/fesm2020/thecla-auth0-angular.mjs +217 -0
  16. package/fesm2020/thecla-auth0-angular.mjs.map +1 -0
  17. package/lib/actions/auth.actions.d.ts +13 -9
  18. package/lib/auth.guard.d.ts +1 -1
  19. package/lib/effects/auth.effects.d.ts +10 -6
  20. package/package.json +24 -11
  21. package/bundles/thecla-auth0-angular.umd.js +0 -578
  22. package/bundles/thecla-auth0-angular.umd.js.map +0 -1
  23. package/esm2015/lib/actions/auth.actions.js +0 -8
  24. package/esm2015/lib/auth.guard.js +0 -29
  25. package/esm2015/lib/auth.service.js +0 -57
  26. package/esm2015/lib/effects/auth.effects.js +0 -53
  27. package/esm2015/lib/reducers/auth.reducer.js +0 -19
  28. package/fesm2015/thecla-auth0-angular.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ import { createAction, props } from '@ngrx/store';
2
+ export const signIn = createAction('[@thecla/auth0-angular] sign in', props());
3
+ export const signInCompleted = createAction('[@thecla/auth0-angular] sign in completed', props());
4
+ export const signedIn = createAction('[@thecla/auth0-angular] signed in', props());
5
+ export const signInFailed = createAction('[@thecla/auth0-angular] sign in failed', props());
6
+ export const signOut = createAction('[@thecla/auth0-angular] sign out');
7
+ export const signedOut = createAction('[@thecla/auth0-angular] signed out');
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2FjdGlvbnMvYXV0aC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxFQUF5QixDQUFDLENBQUM7QUFFdEcsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FDekMsMkNBQTJDLEVBQzNDLEtBQUssRUFBaUMsQ0FDdkMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxFQUFxQixDQUFDLENBQUM7QUFFdEcsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLEVBQW9CLENBQUMsQ0FBQztBQUU5RyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFByb2ZpbGUgfSBmcm9tICcuLi9zdGF0ZS9hdXRoLnN0YXRlJztcblxuZXhwb3J0IGNvbnN0IHNpZ25JbiA9IGNyZWF0ZUFjdGlvbignW0B0aGVjbGEvYXV0aDAtYW5ndWxhcl0gc2lnbiBpbicsIHByb3BzPHsgcmV0dXJuVXJsOiBzdHJpbmcgfT4oKSk7XG5cbmV4cG9ydCBjb25zdCBzaWduSW5Db21wbGV0ZWQgPSBjcmVhdGVBY3Rpb24oXG4gICdbQHRoZWNsYS9hdXRoMC1hbmd1bGFyXSBzaWduIGluIGNvbXBsZXRlZCcsXG4gIHByb3BzPHsgc3RhdGU6IHsgdGFyZ2V0OiBzdHJpbmcgfSB9PigpXG4pO1xuXG5leHBvcnQgY29uc3Qgc2lnbmVkSW4gPSBjcmVhdGVBY3Rpb24oJ1tAdGhlY2xhL2F1dGgwLWFuZ3VsYXJdIHNpZ25lZCBpbicsIHByb3BzPHsgdXNlcjogUHJvZmlsZSB9PigpKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25JbkZhaWxlZCA9IGNyZWF0ZUFjdGlvbignW0B0aGVjbGEvYXV0aDAtYW5ndWxhcl0gc2lnbiBpbiBmYWlsZWQnLCBwcm9wczx7IGVycm9yOiBFcnJvciB9PigpKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25PdXQgPSBjcmVhdGVBY3Rpb24oJ1tAdGhlY2xhL2F1dGgwLWFuZ3VsYXJdIHNpZ24gb3V0Jyk7XG5cbmV4cG9ydCBjb25zdCBzaWduZWRPdXQgPSBjcmVhdGVBY3Rpb24oJ1tAdGhlY2xhL2F1dGgwLWFuZ3VsYXJdIHNpZ25lZCBvdXQnKTtcbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Store } from '@ngrx/store';
3
+ import { first, tap } from 'rxjs/operators';
4
+ import { signIn } from './actions/auth.actions';
5
+ import { isAuthenticated } from './store';
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
+ }
21
+ AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
22
+ AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthGuard, providedIn: 'root' });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthGuard, decorators: [{
24
+ type: Injectable,
25
+ args: [{
26
+ providedIn: 'root',
27
+ }]
28
+ }], ctorParameters: function () { return [{ type: i1.Store }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFLMUMsTUFBTSxPQUFPLFNBQVM7SUFHcEIsWUFBb0MsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFGL0IsbUJBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVoQixDQUFDO0lBRTdDLFdBQVcsQ0FBQyxJQUE0QixFQUFFLEtBQTBCO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDUixDQUFDO0lBQ0osQ0FBQzs7c0dBZFUsU0FBUzswR0FBVCxTQUFTLGNBRlIsTUFBTTsyRkFFUCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZmlyc3QsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNpZ25JbiB9IGZyb20gJy4vYWN0aW9ucy9hdXRoLmFjdGlvbnMnO1xuaW1wb3J0IHsgaXNBdXRoZW50aWNhdGVkIH0gZnJvbSAnLi9zdG9yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aGVudGljYXRlZCQgPSB0aGlzLnN0b3JlLnBpcGUoaXNBdXRoZW50aWNhdGVkKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgcHVibGljIGNhbkFjdGl2YXRlKG5leHQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aGVudGljYXRlZCQucGlwZShcbiAgICAgIHRhcChhdXRoID0+IHtcbiAgICAgICAgaWYgKCFhdXRoKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzaWduSW4oeyByZXR1cm5Vcmw6IHN0YXRlLnVybCB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -28,10 +28,10 @@ export class AuthModule {
28
28
  };
29
29
  }
30
30
  }
31
- AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
- AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, imports: [i1.StoreFeatureModule, i2.EffectsFeatureModule] });
33
- AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, imports: [[StoreModule.forFeature(featureKey, reducer), EffectsModule.forFeature([AuthEffects])]] });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, decorators: [{
31
+ AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
+ AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, imports: [i1.StoreFeatureModule, i2.EffectsFeatureModule] });
33
+ AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, imports: [[StoreModule.forFeature(featureKey, reducer), EffectsModule.forFeature([AuthEffects])]] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, decorators: [{
35
35
  type: NgModule,
36
36
  args: [{
37
37
  declarations: [],
@@ -0,0 +1,52 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Auth0Client } from '@auth0/auth0-spa-js';
3
+ import { EMPTY, from } from 'rxjs';
4
+ import { filter, map, switchMap } 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
+ this.auth0 = new Auth0Client({
12
+ audience: config.audience,
13
+ client_id: config.clientId,
14
+ domain: config.domain,
15
+ redirect_uri: config.redirectUri ?? location.origin,
16
+ scope: config.scope,
17
+ useRefreshTokens: config.useRefreshTokens,
18
+ sessionCheckExpiryDays: config.sessionCheckExpiryDays,
19
+ });
20
+ }
21
+ isAuthenticated() {
22
+ return from(this.checkSession());
23
+ }
24
+ loginWithRedirect(appState) {
25
+ return from(this.auth0.loginWithRedirect({ appState })).pipe(switchMap(() => EMPTY));
26
+ }
27
+ handleRedirectCallback() {
28
+ return from(this.auth0.handleRedirectCallback()).pipe(map(result => result.appState));
29
+ }
30
+ getUser() {
31
+ return from(this.auth0.getUser()).pipe(filter((u) => u !== undefined));
32
+ }
33
+ getAccessToken() {
34
+ return from(this.auth0.getTokenSilently());
35
+ }
36
+ logout() {
37
+ this.auth0.logout({ returnTo: this.config.logoutUri ?? location.origin });
38
+ }
39
+ async checkSession() {
40
+ await this.auth0.checkSession();
41
+ return await this.auth0.isAuthenticated();
42
+ }
43
+ }
44
+ AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthService, deps: [{ token: i1.AuthConfig }], target: i0.ɵɵFactoryTarget.Injectable });
45
+ AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthService, providedIn: 'root' });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthService, decorators: [{
47
+ type: Injectable,
48
+ args: [{
49
+ providedIn: 'root',
50
+ }]
51
+ }], ctorParameters: function () { return [{ type: i1.AuthConfig }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQVEsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFBb0MsTUFBa0I7UUFBbEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzNCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxNQUFNO1lBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ3pDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxzQkFBc0I7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQTRCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUE4QixDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFhLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUN4QixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFaEMsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUMsQ0FBQzs7d0dBM0NVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoMENsaWVudCwgVXNlciB9IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuaW1wb3J0IHsgRU1QVFksIGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aDA6IEF1dGgwQ2xpZW50O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogQXV0aENvbmZpZykge1xuICAgIHRoaXMuYXV0aDAgPSBuZXcgQXV0aDBDbGllbnQoe1xuICAgICAgYXVkaWVuY2U6IGNvbmZpZy5hdWRpZW5jZSxcbiAgICAgIGNsaWVudF9pZDogY29uZmlnLmNsaWVudElkLFxuICAgICAgZG9tYWluOiBjb25maWcuZG9tYWluLFxuICAgICAgcmVkaXJlY3RfdXJpOiBjb25maWcucmVkaXJlY3RVcmkgPz8gbG9jYXRpb24ub3JpZ2luLFxuICAgICAgc2NvcGU6IGNvbmZpZy5zY29wZSxcbiAgICAgIHVzZVJlZnJlc2hUb2tlbnM6IGNvbmZpZy51c2VSZWZyZXNoVG9rZW5zLFxuICAgICAgc2Vzc2lvbkNoZWNrRXhwaXJ5RGF5czogY29uZmlnLnNlc3Npb25DaGVja0V4cGlyeURheXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkKCkge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tTZXNzaW9uKCkpO1xuICB9XG5cbiAgcHVibGljIGxvZ2luV2l0aFJlZGlyZWN0KGFwcFN0YXRlOiB7IHRhcmdldDogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmF1dGgwLmxvZ2luV2l0aFJlZGlyZWN0KHsgYXBwU3RhdGUgfSkpLnBpcGUoc3dpdGNoTWFwKCgpID0+IEVNUFRZKSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUmVkaXJlY3RDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmF1dGgwLmhhbmRsZVJlZGlyZWN0Q2FsbGJhY2soKSkucGlwZShtYXAocmVzdWx0ID0+IHJlc3VsdC5hcHBTdGF0ZSBhcyB7IHRhcmdldDogc3RyaW5nIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyKCkge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXV0aDAuZ2V0VXNlcigpKS5waXBlKGZpbHRlcigodSk6IHUgaXMgVXNlciA9PiB1ICE9PSB1bmRlZmluZWQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY2Nlc3NUb2tlbigpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmF1dGgwLmdldFRva2VuU2lsZW50bHkoKSk7XG4gIH1cblxuICBwdWJsaWMgbG9nb3V0KCkge1xuICAgIHRoaXMuYXV0aDAubG9nb3V0KHsgcmV0dXJuVG86IHRoaXMuY29uZmlnLmxvZ291dFVyaSA/PyBsb2NhdGlvbi5vcmlnaW4gfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrU2Vzc2lvbigpIHtcbiAgICBhd2FpdCB0aGlzLmF1dGgwLmNoZWNrU2Vzc2lvbigpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXV0aDAuaXNBdXRoZW50aWNhdGVkKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { Actions, createEffect, ofType } from '@ngrx/effects';
4
+ import { asyncScheduler, of } from 'rxjs';
5
+ import { catchError, map, observeOn, switchMap, tap } from 'rxjs/operators';
6
+ import { signedIn, signedOut, signIn, signInCompleted, signInFailed, signOut } from '../actions/auth.actions';
7
+ import { AuthService } from '../auth.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ngrx/effects";
10
+ import * as i2 from "../auth.service";
11
+ import * as i3 from "@angular/router";
12
+ export class AuthEffects {
13
+ constructor(actions$, auth, router) {
14
+ this.actions$ = actions$;
15
+ this.auth = auth;
16
+ this.router = router;
17
+ this.signIn$ = createEffect(() => this.actions$.pipe(ofType(signIn), switchMap(action => this.auth.loginWithRedirect({ target: action.returnUrl }))), { dispatch: false });
18
+ this.signInCompleted$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(() => this.auth.getUser().pipe(map(user => signedIn({ user })), catchError(error => of(signInFailed({ error })))))));
19
+ this.redirect$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(action => this.router.navigateByUrl(action.state.target, { replaceUrl: true }))), { dispatch: false });
20
+ this.signOut$ = createEffect(() => this.actions$.pipe(ofType(signOut), tap(() => {
21
+ try {
22
+ this.auth.logout();
23
+ }
24
+ catch { }
25
+ }), map(() => signedOut())));
26
+ this.init$ = createEffect(() => ({ scheduler = asyncScheduler } = {}) => {
27
+ const params = window.location.search;
28
+ if (params.includes('code=') && params.includes('state=')) {
29
+ return this.completeSignIn(scheduler);
30
+ }
31
+ else {
32
+ return this.auth.isAuthenticated().pipe(switchMap(auth => this.getAuthResult(auth)), catchError(error => of(signInFailed({ error }))), observeOn(scheduler));
33
+ }
34
+ });
35
+ }
36
+ getAuthResult(auth) {
37
+ if (auth) {
38
+ return this.auth.getUser().pipe(map(user => signedIn({ user })));
39
+ }
40
+ else {
41
+ return of(signedOut());
42
+ }
43
+ }
44
+ completeSignIn(scheduler) {
45
+ return this.auth.handleRedirectCallback().pipe(map(state => signInCompleted({ state })), catchError(error => of(signInFailed({ error }))), observeOn(scheduler));
46
+ }
47
+ }
48
+ AuthEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthEffects, deps: [{ token: i1.Actions }, { token: i2.AuthService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
49
+ AuthEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthEffects });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthEffects, decorators: [{
51
+ type: Injectable
52
+ }], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.AuthService }, { type: i3.Router }]; } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2VmZmVjdHMvYXV0aC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBaUIsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRzlDLE1BQU0sT0FBTyxXQUFXO0lBeUR0QixZQUNtQixRQUFpQixFQUNqQixJQUFpQixFQUNqQixNQUFjO1FBRmQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQVE7UUEzRGpCLFlBQU8sR0FBRyxZQUFZLENBQ3BDLEdBQUcsRUFBRSxDQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQ2QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFN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SSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUM1QyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQ3hDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDaEQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUNyQixDQUFDO0lBQ0osQ0FBQzs7d0dBN0VVLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBhc3luY1NjaGVkdWxlciwgb2YsIFNjaGVkdWxlckxpa2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgb2JzZXJ2ZU9uLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNpZ25lZEluLCBzaWduZWRPdXQsIHNpZ25Jbiwgc2lnbkluQ29tcGxldGVkLCBzaWduSW5GYWlsZWQsIHNpZ25PdXQgfSBmcm9tICcuLi9hY3Rpb25zL2F1dGguYWN0aW9ucyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoRWZmZWN0cyB7XG4gIHB1YmxpYyByZWFkb25seSBzaWduSW4kID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShzaWduSW4pLFxuICAgICAgICBzd2l0Y2hNYXAoYWN0aW9uID0+IHRoaXMuYXV0aC5sb2dpbldpdGhSZWRpcmVjdCh7IHRhcmdldDogYWN0aW9uLnJldHVyblVybCB9KSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaWduSW5Db21wbGV0ZWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHNpZ25JbkNvbXBsZXRlZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgdGhpcy5hdXRoLmdldFVzZXIoKS5waXBlKFxuICAgICAgICAgIG1hcCh1c2VyID0+IHNpZ25lZEluKHsgdXNlciB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihzaWduSW5GYWlsZWQoeyBlcnJvciB9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlZGlyZWN0JCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoc2lnbkluQ29tcGxldGVkKSxcbiAgICAgICAgc3dpdGNoTWFwKGFjdGlvbiA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGFjdGlvbi5zdGF0ZS50YXJnZXQsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaWduT3V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShzaWduT3V0KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5hdXRoLmxvZ291dCgpO1xuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiBzaWduZWRPdXQoKSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGluaXQkID0gY3JlYXRlRWZmZWN0KCgpID0+ICh7IHNjaGVkdWxlciA9IGFzeW5jU2NoZWR1bGVyIH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG5cbiAgICBpZiAocGFyYW1zLmluY2x1ZGVzKCdjb2RlPScpICYmIHBhcmFtcy5pbmNsdWRlcygnc3RhdGU9JykpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlU2lnbkluKHNjaGVkdWxlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmF1dGguaXNBdXRoZW50aWNhdGVkKCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGF1dGggPT4gdGhpcy5nZXRBdXRoUmVzdWx0KGF1dGgpKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihzaWduSW5GYWlsZWQoeyBlcnJvciB9KSkpLFxuICAgICAgICBvYnNlcnZlT24oc2NoZWR1bGVyKVxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRBdXRoUmVzdWx0KGF1dGg6IGJvb2xlYW4pIHtcbiAgICBpZiAoYXV0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXV0aC5nZXRVc2VyKCkucGlwZShtYXAodXNlciA9PiBzaWduZWRJbih7IHVzZXIgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKHNpZ25lZE91dCgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBsZXRlU2lnbkluKHNjaGVkdWxlcjogU2NoZWR1bGVyTGlrZSkge1xuICAgIHJldHVybiB0aGlzLmF1dGguaGFuZGxlUmVkaXJlY3RDYWxsYmFjaygpLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc2lnbkluQ29tcGxldGVkKHsgc3RhdGUgfSkpLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihzaWduSW5GYWlsZWQoeyBlcnJvciB9KSkpLFxuICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcilcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -24,9 +24,9 @@ export class JwtInterceptor {
24
24
  return token$.pipe(map(token => request.clone({ setHeaders: { Authorization: `Bearer ${token}` } })));
25
25
  }
26
26
  }
27
- JwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: JwtInterceptor, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
28
- JwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: JwtInterceptor });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: JwtInterceptor, decorators: [{
27
+ JwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: JwtInterceptor, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
28
+ JwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: JwtInterceptor });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: JwtInterceptor, decorators: [{
30
30
  type: Injectable
31
31
  }], ctorParameters: function () { return [{ type: i1.AuthService }]; } });
32
32
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2p3dC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHN0MsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0MsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFHLENBQUM7SUFFbEQsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDM0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BHO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQXlCO1FBQzVDLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJELE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDckIsQ0FBQztJQUVPLFNBQVMsQ0FBQyxPQUF5QjtRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7OzJHQXJCVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSnd0SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhdXRoOiBBdXRoU2VydmljZSkge31cblxuICBwdWJsaWMgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgaWYgKHRoaXMuaXNTYW1lRG9tYWluKHJlcXVlc3QpKSB7XG4gICAgICByZXR1cm4gdGhpcy5hdXRob3JpemUocmVxdWVzdCkucGlwZShtZXJnZU1hcChhdXRob3JpemVkUmVxdWVzdCA9PiBuZXh0LmhhbmRsZShhdXRob3JpemVkUmVxdWVzdCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNTYW1lRG9tYWluKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICBjb25zdCBpc0Fic29sdXRlID0gL15odHRwcz86XFwvXFwvL2kudGVzdChyZXF1ZXN0LnVybCk7XG5cbiAgICByZXR1cm4gIWlzQWJzb2x1dGU7XG4gIH1cblxuICBwcml2YXRlIGF1dGhvcml6ZShyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gICAgY29uc3QgdG9rZW4kID0gdGhpcy5hdXRoLmdldEFjY2Vzc1Rva2VuKCk7XG5cbiAgICByZXR1cm4gdG9rZW4kLnBpcGUobWFwKHRva2VuID0+IHJlcXVlc3QuY2xvbmUoeyBzZXRIZWFkZXJzOiB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH0gfSkpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,20 @@
1
+ import { createReducer, on } from '@ngrx/store';
2
+ import { signedIn, signedOut, signInFailed } from '../actions/auth.actions';
3
+ export const noAuthentication = {
4
+ authenticating: false,
5
+ authenticated: false,
6
+ };
7
+ export const startAuthentication = {
8
+ authenticating: true,
9
+ authenticated: false,
10
+ };
11
+ const authReducer = createReducer(startAuthentication, on(signedIn, (state, { user }) => ({
12
+ ...state,
13
+ authenticating: false,
14
+ authenticated: true,
15
+ user,
16
+ })), on(signedOut, _ => noAuthentication), on(signInFailed, _ => noAuthentication));
17
+ export function reducer(state, action) {
18
+ return authReducer(state, action);
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL3JlZHVjZXJzL2F1dGgucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc1RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBVTtJQUNyQyxjQUFjLEVBQUUsS0FBSztJQUNyQixhQUFhLEVBQUUsS0FBSztDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQVU7SUFDeEMsY0FBYyxFQUFFLElBQUk7SUFDcEIsYUFBYSxFQUFFLEtBQUs7Q0FDckIsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FDL0IsbUJBQW1CLEVBQ25CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQyxHQUFHLEtBQUs7SUFDUixjQUFjLEVBQUUsS0FBSztJQUNyQixhQUFhLEVBQUUsSUFBSTtJQUNuQixJQUFJO0NBQ0wsQ0FBQyxDQUFDLEVBQ0gsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQ3BDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN4QyxDQUFDO0FBRUYsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUF3QixFQUFFLE1BQWM7SUFDOUQsT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24sIGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgc2lnbmVkSW4sIHNpZ25lZE91dCwgc2lnbkluRmFpbGVkIH0gZnJvbSAnLi4vYWN0aW9ucy9hdXRoLmFjdGlvbnMnO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9hdXRoLnN0YXRlJztcblxuZXhwb3J0IGNvbnN0IG5vQXV0aGVudGljYXRpb246IFN0YXRlID0ge1xuICBhdXRoZW50aWNhdGluZzogZmFsc2UsXG4gIGF1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNvbnN0IHN0YXJ0QXV0aGVudGljYXRpb246IFN0YXRlID0ge1xuICBhdXRoZW50aWNhdGluZzogdHJ1ZSxcbiAgYXV0aGVudGljYXRlZDogZmFsc2UsXG59O1xuXG5jb25zdCBhdXRoUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gIHN0YXJ0QXV0aGVudGljYXRpb24sXG4gIG9uKHNpZ25lZEluLCAoc3RhdGUsIHsgdXNlciB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGF1dGhlbnRpY2F0aW5nOiBmYWxzZSxcbiAgICBhdXRoZW50aWNhdGVkOiB0cnVlLFxuICAgIHVzZXIsXG4gIH0pKSxcbiAgb24oc2lnbmVkT3V0LCBfID0+IG5vQXV0aGVudGljYXRpb24pLFxuICBvbihzaWduSW5GYWlsZWQsIF8gPT4gbm9BdXRoZW50aWNhdGlvbilcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VyKHN0YXRlOiBTdGF0ZSB8IHVuZGVmaW5lZCwgYWN0aW9uOiBBY3Rpb24pIHtcbiAgcmV0dXJuIGF1dGhSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xufVxuIl19
@@ -5,21 +5,21 @@ import * as i1 from '@ngrx/effects';
5
5
  import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
6
6
  import * as i1$1 from '@ngrx/store';
7
7
  import { createAction, props, createReducer, on, createFeatureSelector, select, StoreModule } from '@ngrx/store';
8
- import * as i3 from '@angular/router';
9
8
  import { from, EMPTY, of, asyncScheduler, pipe } from 'rxjs';
10
9
  import { switchMap, map, filter, catchError, tap, observeOn, mergeMap, first } from 'rxjs/operators';
11
- import { __awaiter, __rest } from 'tslib';
10
+ import { __awaiter } from 'tslib';
12
11
  import { Auth0Client } from '@auth0/auth0-spa-js';
12
+ import * as i3 from '@angular/router';
13
13
 
14
14
  class AuthConfig {
15
15
  }
16
16
 
17
- const signIn = createAction('@thecla/auth0-angular/sign-in', props());
18
- const signInCompleted = createAction('@thecla/auth0-angular/sign-in-completed', props());
19
- const signedIn = createAction('@thecla/auth0-angular/signed-in', props());
20
- const signInFailed = createAction('@thecla/auth0-angular/sign-in-failed', props());
21
- const signOut = createAction('@thecla/auth0-angular/sign-out');
22
- const signedOut = createAction('@thecla/auth0-angular/signed-out');
17
+ const signIn = createAction('[@thecla/auth0-angular] sign in', props());
18
+ const signInCompleted = createAction('[@thecla/auth0-angular] sign in completed', props());
19
+ const signedIn = createAction('[@thecla/auth0-angular] signed in', props());
20
+ const signInFailed = createAction('[@thecla/auth0-angular] sign in failed', props());
21
+ const signOut = createAction('[@thecla/auth0-angular] sign out');
22
+ const signedOut = createAction('[@thecla/auth0-angular] signed out');
23
23
 
24
24
  class AuthService {
25
25
  constructor(config) {
@@ -61,9 +61,9 @@ class AuthService {
61
61
  });
62
62
  }
63
63
  }
64
- AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthService, deps: [{ token: AuthConfig }], target: i0.ɵɵFactoryTarget.Injectable });
65
- AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthService, providedIn: 'root' });
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthService, decorators: [{
64
+ AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthService, deps: [{ token: AuthConfig }], target: i0.ɵɵFactoryTarget.Injectable });
65
+ AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthService, providedIn: 'root' });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthService, decorators: [{
67
67
  type: Injectable,
68
68
  args: [{
69
69
  providedIn: 'root',
@@ -76,7 +76,7 @@ class AuthEffects {
76
76
  this.auth = auth;
77
77
  this.router = router;
78
78
  this.signIn$ = createEffect(() => this.actions$.pipe(ofType(signIn), switchMap(action => this.auth.loginWithRedirect({ target: action.returnUrl }))), { dispatch: false });
79
- this.signInCompleted$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(() => this.auth.getUser().pipe(map(user => signedIn(user)), catchError(error => of(signInFailed({ error })))))));
79
+ this.signInCompleted$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(() => this.auth.getUser().pipe(map(user => signedIn({ user })), catchError(error => of(signInFailed({ error })))))));
80
80
  this.redirect$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(action => this.router.navigateByUrl(action.state.target, { replaceUrl: true }))), { dispatch: false });
81
81
  this.signOut$ = createEffect(() => this.actions$.pipe(ofType(signOut), tap(() => {
82
82
  try {
@@ -96,7 +96,7 @@ class AuthEffects {
96
96
  }
97
97
  getAuthResult(auth) {
98
98
  if (auth) {
99
- return this.auth.getUser().pipe(map(user => signedIn(user)));
99
+ return this.auth.getUser().pipe(map(user => signedIn({ user })));
100
100
  }
101
101
  else {
102
102
  return of(signedOut());
@@ -106,9 +106,9 @@ class AuthEffects {
106
106
  return this.auth.handleRedirectCallback().pipe(map(state => signInCompleted({ state })), catchError(error => of(signInFailed({ error }))), observeOn(scheduler));
107
107
  }
108
108
  }
109
- AuthEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthEffects, deps: [{ token: i1.Actions }, { token: AuthService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
110
- AuthEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthEffects });
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthEffects, decorators: [{
109
+ AuthEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthEffects, deps: [{ token: i1.Actions }, { token: AuthService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
110
+ AuthEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthEffects });
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthEffects, decorators: [{
112
112
  type: Injectable
113
113
  }], ctorParameters: function () { return [{ type: i1.Actions }, { type: AuthService }, { type: i3.Router }]; } });
114
114
 
@@ -133,9 +133,9 @@ class JwtInterceptor {
133
133
  return token$.pipe(map(token => request.clone({ setHeaders: { Authorization: `Bearer ${token}` } })));
134
134
  }
135
135
  }
136
- JwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: JwtInterceptor, deps: [{ token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
137
- JwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: JwtInterceptor });
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: JwtInterceptor, decorators: [{
136
+ JwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: JwtInterceptor, deps: [{ token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
137
+ JwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: JwtInterceptor });
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: JwtInterceptor, decorators: [{
139
139
  type: Injectable
140
140
  }], ctorParameters: function () { return [{ type: AuthService }]; } });
141
141
 
@@ -147,10 +147,7 @@ const startAuthentication = {
147
147
  authenticating: true,
148
148
  authenticated: false,
149
149
  };
150
- const authReducer = createReducer(startAuthentication, on(signedIn, (state, _a) => {
151
- var { type } = _a, payload = __rest(_a, ["type"]);
152
- return (Object.assign(Object.assign({}, state), { authenticating: false, authenticated: true, user: payload }));
153
- }), on(signedOut, () => noAuthentication), on(signInFailed, () => noAuthentication));
150
+ const authReducer = createReducer(startAuthentication, on(signedIn, (state, { user }) => (Object.assign(Object.assign({}, state), { authenticating: false, authenticated: true, user }))), on(signedOut, _ => noAuthentication), on(signInFailed, _ => noAuthentication));
154
151
  function reducer(state, action) {
155
152
  return authReducer(state, action);
156
153
  }
@@ -178,10 +175,10 @@ class AuthModule {
178
175
  };
179
176
  }
180
177
  }
181
- AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
182
- AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, imports: [i1$1.StoreFeatureModule, i1.EffectsFeatureModule] });
183
- AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, imports: [[StoreModule.forFeature(featureKey, reducer), EffectsModule.forFeature([AuthEffects])]] });
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthModule, decorators: [{
178
+ AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
179
+ AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, imports: [i1$1.StoreFeatureModule, i1.EffectsFeatureModule] });
180
+ AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, imports: [[StoreModule.forFeature(featureKey, reducer), EffectsModule.forFeature([AuthEffects])]] });
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthModule, decorators: [{
185
182
  type: NgModule,
186
183
  args: [{
187
184
  declarations: [],
@@ -203,9 +200,9 @@ class AuthGuard {
203
200
  }), first());
204
201
  }
205
202
  }
206
- AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthGuard, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
207
- AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthGuard, providedIn: 'root' });
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImport: i0, type: AuthGuard, decorators: [{
203
+ AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthGuard, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
204
+ AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthGuard, providedIn: 'root' });
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AuthGuard, decorators: [{
209
206
  type: Injectable,
210
207
  args: [{
211
208
  providedIn: 'root',
@@ -217,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.0", ngImpor
217
214
  */
218
215
 
219
216
  export { AuthGuard, AuthModule, getUser, isAuthenticated, signIn, signOut, signedIn, signedOut };
220
- //# sourceMappingURL=thecla-auth0-angular.js.map
217
+ //# sourceMappingURL=thecla-auth0-angular.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thecla-auth0-angular.mjs","sources":["../../../projects/auth0-angular/src/lib/auth-config.ts","../../../projects/auth0-angular/src/lib/actions/auth.actions.ts","../../../projects/auth0-angular/src/lib/auth.service.ts","../../../projects/auth0-angular/src/lib/effects/auth.effects.ts","../../../projects/auth0-angular/src/lib/jwt.interceptor.ts","../../../projects/auth0-angular/src/lib/reducers/auth.reducer.ts","../../../projects/auth0-angular/src/lib/store/index.ts","../../../projects/auth0-angular/src/lib/auth.module.ts","../../../projects/auth0-angular/src/lib/auth.guard.ts","../../../projects/auth0-angular/src/thecla-auth0-angular.ts"],"sourcesContent":["export abstract class AuthConfig {\n public abstract audience: string;\n public abstract clientId: string;\n public abstract domain: string;\n public abstract scope: string;\n public abstract redirectUri?: string;\n public abstract logoutUri?: string;\n public abstract useRefreshTokens?: boolean;\n public abstract sessionCheckExpiryDays?: number;\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Profile } from '../state/auth.state';\n\nexport const signIn = createAction('[@thecla/auth0-angular] sign in', props<{ returnUrl: string }>());\n\nexport const signInCompleted = createAction(\n '[@thecla/auth0-angular] sign in completed',\n props<{ state: { target: string } }>()\n);\n\nexport const signedIn = createAction('[@thecla/auth0-angular] signed in', props<{ user: Profile }>());\n\nexport const signInFailed = createAction('[@thecla/auth0-angular] sign in failed', props<{ error: Error }>());\n\nexport const signOut = createAction('[@thecla/auth0-angular] sign out');\n\nexport const signedOut = createAction('[@thecla/auth0-angular] signed out');\n","import { Injectable } from '@angular/core';\nimport { Auth0Client, User } from '@auth0/auth0-spa-js';\nimport { EMPTY, from, Observable } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { AuthConfig } from './auth-config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly auth0: Auth0Client;\n\n public constructor(private readonly config: AuthConfig) {\n this.auth0 = new Auth0Client({\n audience: config.audience,\n client_id: config.clientId,\n domain: config.domain,\n redirect_uri: config.redirectUri ?? location.origin,\n scope: config.scope,\n useRefreshTokens: config.useRefreshTokens,\n sessionCheckExpiryDays: config.sessionCheckExpiryDays,\n });\n }\n\n public isAuthenticated() {\n return from(this.checkSession());\n }\n\n public loginWithRedirect(appState: { target: string }) {\n return from(this.auth0.loginWithRedirect({ appState })).pipe(switchMap(() => EMPTY));\n }\n\n public handleRedirectCallback() {\n return from(this.auth0.handleRedirectCallback()).pipe(map(result => result.appState as { target: string }));\n }\n\n public getUser() {\n return from(this.auth0.getUser()).pipe(filter((u): u is User => u !== undefined));\n }\n\n public getAccessToken(): Observable<unknown> {\n return from(this.auth0.getTokenSilently());\n }\n\n public logout() {\n this.auth0.logout({ returnTo: this.config.logoutUri ?? location.origin });\n }\n\n private async checkSession() {\n await this.auth0.checkSession();\n\n return await this.auth0.isAuthenticated();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { asyncScheduler, of, SchedulerLike } from 'rxjs';\nimport { catchError, map, observeOn, switchMap, tap } from 'rxjs/operators';\nimport { signedIn, signedOut, signIn, signInCompleted, signInFailed, signOut } from '../actions/auth.actions';\nimport { AuthService } from '../auth.service';\n\n@Injectable()\nexport class AuthEffects {\n public readonly signIn$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(signIn),\n switchMap(action => this.auth.loginWithRedirect({ target: action.returnUrl }))\n ),\n { dispatch: false }\n );\n\n public readonly signInCompleted$ = createEffect(() =>\n this.actions$.pipe(\n ofType(signInCompleted),\n switchMap(() =>\n this.auth.getUser().pipe(\n map(user => signedIn({ user })),\n catchError(error => of(signInFailed({ error })))\n )\n )\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 tap(() => {\n try {\n this.auth.logout();\n } catch {}\n }),\n map(() => signedOut())\n )\n );\n\n public readonly init$ = createEffect(() => ({ scheduler = asyncScheduler } = {}) => {\n const params = window.location.search;\n\n if (params.includes('code=') && params.includes('state=')) {\n return this.completeSignIn(scheduler);\n } else {\n return this.auth.isAuthenticated().pipe(\n switchMap(auth => this.getAuthResult(auth)),\n catchError(error => of(signInFailed({ error }))),\n observeOn(scheduler)\n );\n }\n });\n\n public constructor(\n private readonly actions$: Actions,\n private readonly auth: AuthService,\n private readonly router: Router\n ) {}\n\n private getAuthResult(auth: boolean) {\n if (auth) {\n return this.auth.getUser().pipe(map(user => signedIn({ user })));\n } else {\n return of(signedOut());\n }\n }\n\n private completeSignIn(scheduler: SchedulerLike) {\n return this.auth.handleRedirectCallback().pipe(\n map(state => signInCompleted({ state })),\n catchError(error => of(signInFailed({ error }))),\n observeOn(scheduler)\n );\n }\n}\n","import { HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { 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 constructor(private readonly auth: AuthService) {}\n\n public intercept(request: HttpRequest<any>, next: HttpHandler) {\n if (this.isSameDomain(request)) {\n return this.authorize(request).pipe(mergeMap(authorizedRequest => next.handle(authorizedRequest)));\n } else {\n return next.handle(request);\n }\n }\n\n private isSameDomain(request: HttpRequest<any>) {\n const isAbsolute = /^https?:\\/\\//i.test(request.url);\n\n return !isAbsolute;\n }\n\n private authorize(request: HttpRequest<any>) {\n const token$ = this.auth.getAccessToken();\n\n return token$.pipe(map(token => request.clone({ setHeaders: { Authorization: `Bearer ${token}` } })));\n }\n}\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { signedIn, signedOut, signInFailed } from '../actions/auth.actions';\nimport { State } from '../state/auth.state';\n\nexport const noAuthentication: State = {\n authenticating: false,\n authenticated: false,\n};\n\nexport const startAuthentication: State = {\n authenticating: true,\n authenticated: false,\n};\n\nconst authReducer = 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\nexport function reducer(state: State | undefined, action: Action) {\n return authReducer(state, action);\n}\n","import { createFeatureSelector, select } from '@ngrx/store';\nimport { pipe } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { State } from '../state/auth.state';\n\nexport const featureKey = 'auth';\n\nexport const selectState = createFeatureSelector<State>(featureKey);\n\nexport const isAuthenticated = pipe(\n select(selectState),\n filter(state => !state.authenticating),\n map(state => state.authenticated)\n);\n\nexport const getUser = pipe(\n select(selectState),\n filter(state => !state.authenticating),\n map(state => state.user)\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 './effects/auth.effects';\nimport { JwtInterceptor } from './jwt.interceptor';\nimport { reducer } from './reducers/auth.reducer';\nimport { featureKey } from './store';\n\n@NgModule({\n declarations: [],\n imports: [StoreModule.forFeature(featureKey, reducer), 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 { 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 './actions/auth.actions';\nimport { isAuthenticated } from './store';\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}