@thecla/auth0-angular 4.1.0 → 6.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.
- package/esm2020/lib/actions/auth.actions.mjs +9 -0
- package/{esm2015/lib/auth-config.js → esm2020/lib/auth-config.mjs} +0 -0
- package/esm2020/lib/auth.guard.mjs +29 -0
- package/{esm2015/lib/auth.module.js → esm2020/lib/auth.module.mjs} +5 -5
- package/esm2020/lib/auth.service.mjs +52 -0
- package/esm2020/lib/effects/auth.effects.mjs +56 -0
- package/{esm2015/lib/jwt.interceptor.js → esm2020/lib/jwt.interceptor.mjs} +3 -3
- package/esm2020/lib/reducers/auth.reducer.mjs +20 -0
- package/{esm2015/lib/state/auth.state.js → esm2020/lib/state/auth.state.mjs} +0 -0
- package/{esm2015/lib/store/index.js → esm2020/lib/store/index.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/thecla-auth0-angular.js → esm2020/thecla-auth0-angular.mjs} +0 -0
- package/fesm2015/{thecla-auth0-angular.js → thecla-auth0-angular.mjs} +40 -39
- package/fesm2015/thecla-auth0-angular.mjs.map +1 -0
- package/fesm2020/thecla-auth0-angular.mjs +221 -0
- package/fesm2020/thecla-auth0-angular.mjs.map +1 -0
- package/{thecla-auth0-angular.d.ts → index.d.ts} +0 -0
- package/lib/actions/auth.actions.d.ts +14 -9
- package/lib/auth.guard.d.ts +1 -1
- package/lib/effects/auth.effects.d.ts +13 -10
- package/package.json +26 -14
- package/bundles/thecla-auth0-angular.umd.js +0 -578
- package/bundles/thecla-auth0-angular.umd.js.map +0 -1
- package/esm2015/lib/actions/auth.actions.js +0 -8
- package/esm2015/lib/auth.guard.js +0 -29
- package/esm2015/lib/auth.service.js +0 -57
- package/esm2015/lib/effects/auth.effects.js +0 -53
- package/esm2015/lib/reducers/auth.reducer.js +0 -19
- package/fesm2015/thecla-auth0-angular.js.map +0 -1
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Injectable, NgModule } from '@angular/core';
|
|
4
|
+
import * as i1 from '@ngrx/effects';
|
|
5
|
+
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
6
|
+
import * as i1$1 from '@ngrx/store';
|
|
7
|
+
import { createAction, props, createReducer, on, createFeatureSelector, select, StoreModule } from '@ngrx/store';
|
|
8
|
+
import * as i3 from '@angular/router';
|
|
9
|
+
import { from, EMPTY, of, pipe } from 'rxjs';
|
|
10
|
+
import { switchMap, map, filter, catchError, tap, mergeMap, first } from 'rxjs/operators';
|
|
11
|
+
import { Auth0Client } from '@auth0/auth0-spa-js';
|
|
12
|
+
|
|
13
|
+
class AuthConfig {
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const init = createAction('[@thecla/auth0-angular] init');
|
|
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
|
+
|
|
24
|
+
class AuthService {
|
|
25
|
+
constructor(config) {
|
|
26
|
+
this.config = config;
|
|
27
|
+
this.auth0 = new Auth0Client({
|
|
28
|
+
audience: config.audience,
|
|
29
|
+
client_id: config.clientId,
|
|
30
|
+
domain: config.domain,
|
|
31
|
+
redirect_uri: config.redirectUri ?? location.origin,
|
|
32
|
+
scope: config.scope,
|
|
33
|
+
useRefreshTokens: config.useRefreshTokens,
|
|
34
|
+
sessionCheckExpiryDays: config.sessionCheckExpiryDays,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
isAuthenticated() {
|
|
38
|
+
return from(this.checkSession());
|
|
39
|
+
}
|
|
40
|
+
loginWithRedirect(appState) {
|
|
41
|
+
return from(this.auth0.loginWithRedirect({ appState })).pipe(switchMap(() => EMPTY));
|
|
42
|
+
}
|
|
43
|
+
handleRedirectCallback() {
|
|
44
|
+
return from(this.auth0.handleRedirectCallback()).pipe(map(result => result.appState));
|
|
45
|
+
}
|
|
46
|
+
getUser() {
|
|
47
|
+
return from(this.auth0.getUser()).pipe(filter((u) => u !== undefined));
|
|
48
|
+
}
|
|
49
|
+
getAccessToken() {
|
|
50
|
+
return from(this.auth0.getTokenSilently());
|
|
51
|
+
}
|
|
52
|
+
logout() {
|
|
53
|
+
this.auth0.logout({ returnTo: this.config.logoutUri ?? location.origin });
|
|
54
|
+
}
|
|
55
|
+
async checkSession() {
|
|
56
|
+
await this.auth0.checkSession();
|
|
57
|
+
return await this.auth0.isAuthenticated();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthService, deps: [{ token: AuthConfig }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthService, decorators: [{
|
|
63
|
+
type: Injectable,
|
|
64
|
+
args: [{
|
|
65
|
+
providedIn: 'root',
|
|
66
|
+
}]
|
|
67
|
+
}], ctorParameters: function () { return [{ type: AuthConfig }]; } });
|
|
68
|
+
|
|
69
|
+
class AuthEffects {
|
|
70
|
+
constructor(actions$, auth, router) {
|
|
71
|
+
this.actions$ = actions$;
|
|
72
|
+
this.auth = auth;
|
|
73
|
+
this.router = router;
|
|
74
|
+
this.signIn$ = createEffect(() => this.actions$.pipe(ofType(signIn), switchMap(action => this.auth.loginWithRedirect({ target: action.returnUrl }))), { dispatch: false });
|
|
75
|
+
this.signInCompleted$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(() => this.auth.getUser().pipe(map(user => signedIn({ user })), catchError(error => of(signInFailed({ error })))))));
|
|
76
|
+
this.redirect$ = createEffect(() => this.actions$.pipe(ofType(signInCompleted), switchMap(action => this.router.navigateByUrl(action.state.target, { replaceUrl: true }))), { dispatch: false });
|
|
77
|
+
this.signOut$ = createEffect(() => this.actions$.pipe(ofType(signOut), tap(() => {
|
|
78
|
+
try {
|
|
79
|
+
this.auth.logout();
|
|
80
|
+
}
|
|
81
|
+
catch { }
|
|
82
|
+
}), map(() => signedOut())));
|
|
83
|
+
this.init$ = createEffect(() => this.actions$.pipe(ofType(init), switchMap(() => {
|
|
84
|
+
const params = window.location.search;
|
|
85
|
+
if (params.includes('code=') && params.includes('state=')) {
|
|
86
|
+
return this.completeSignIn();
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return this.auth.isAuthenticated().pipe(switchMap(auth => this.getAuthResult(auth)), catchError(error => of(signInFailed({ error }))));
|
|
90
|
+
}
|
|
91
|
+
})));
|
|
92
|
+
}
|
|
93
|
+
ngrxOnInitEffects() {
|
|
94
|
+
return init();
|
|
95
|
+
}
|
|
96
|
+
getAuthResult(auth) {
|
|
97
|
+
if (auth) {
|
|
98
|
+
return this.auth.getUser().pipe(map(user => signedIn({ user })));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return of(signedOut());
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
completeSignIn() {
|
|
105
|
+
return this.auth.handleRedirectCallback().pipe(map(state => signInCompleted({ state })), catchError(error => of(signInFailed({ error }))));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
AuthEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthEffects, deps: [{ token: i1.Actions }, { token: AuthService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
109
|
+
AuthEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthEffects });
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthEffects, decorators: [{
|
|
111
|
+
type: Injectable
|
|
112
|
+
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: AuthService }, { type: i3.Router }]; } });
|
|
113
|
+
|
|
114
|
+
class JwtInterceptor {
|
|
115
|
+
constructor(auth) {
|
|
116
|
+
this.auth = auth;
|
|
117
|
+
}
|
|
118
|
+
intercept(request, next) {
|
|
119
|
+
if (this.isSameDomain(request)) {
|
|
120
|
+
return this.authorize(request).pipe(mergeMap(authorizedRequest => next.handle(authorizedRequest)));
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
return next.handle(request);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
isSameDomain(request) {
|
|
127
|
+
const isAbsolute = /^https?:\/\//i.test(request.url);
|
|
128
|
+
return !isAbsolute;
|
|
129
|
+
}
|
|
130
|
+
authorize(request) {
|
|
131
|
+
const token$ = this.auth.getAccessToken();
|
|
132
|
+
return token$.pipe(map(token => request.clone({ setHeaders: { Authorization: `Bearer ${token}` } })));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
JwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: JwtInterceptor, deps: [{ token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
136
|
+
JwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: JwtInterceptor });
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: JwtInterceptor, decorators: [{
|
|
138
|
+
type: Injectable
|
|
139
|
+
}], ctorParameters: function () { return [{ type: AuthService }]; } });
|
|
140
|
+
|
|
141
|
+
const noAuthentication = {
|
|
142
|
+
authenticating: false,
|
|
143
|
+
authenticated: false,
|
|
144
|
+
};
|
|
145
|
+
const startAuthentication = {
|
|
146
|
+
authenticating: true,
|
|
147
|
+
authenticated: false,
|
|
148
|
+
};
|
|
149
|
+
const authReducer = createReducer(startAuthentication, on(signedIn, (state, { user }) => ({
|
|
150
|
+
...state,
|
|
151
|
+
authenticating: false,
|
|
152
|
+
authenticated: true,
|
|
153
|
+
user,
|
|
154
|
+
})), on(signedOut, _ => noAuthentication), on(signInFailed, _ => noAuthentication));
|
|
155
|
+
function reducer(state, action) {
|
|
156
|
+
return authReducer(state, action);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const featureKey = 'auth';
|
|
160
|
+
const selectState = createFeatureSelector(featureKey);
|
|
161
|
+
const isAuthenticated = pipe(select(selectState), filter(state => !state.authenticating), map(state => state.authenticated));
|
|
162
|
+
const getUser = pipe(select(selectState), filter(state => !state.authenticating), map(state => state.user));
|
|
163
|
+
|
|
164
|
+
class AuthModule {
|
|
165
|
+
static forRoot(config) {
|
|
166
|
+
return {
|
|
167
|
+
ngModule: AuthModule,
|
|
168
|
+
providers: [
|
|
169
|
+
{
|
|
170
|
+
provide: AuthConfig,
|
|
171
|
+
useValue: config,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
provide: HTTP_INTERCEPTORS,
|
|
175
|
+
useClass: JwtInterceptor,
|
|
176
|
+
multi: true,
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
183
|
+
AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: AuthModule, imports: [i1$1.StoreFeatureModule, i1.EffectsFeatureModule] });
|
|
184
|
+
AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthModule, imports: [StoreModule.forFeature(featureKey, reducer), EffectsModule.forFeature([AuthEffects])] });
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthModule, decorators: [{
|
|
186
|
+
type: NgModule,
|
|
187
|
+
args: [{
|
|
188
|
+
declarations: [],
|
|
189
|
+
imports: [StoreModule.forFeature(featureKey, reducer), EffectsModule.forFeature([AuthEffects])],
|
|
190
|
+
exports: [],
|
|
191
|
+
}]
|
|
192
|
+
}] });
|
|
193
|
+
|
|
194
|
+
class AuthGuard {
|
|
195
|
+
constructor(store) {
|
|
196
|
+
this.store = store;
|
|
197
|
+
this.authenticated$ = this.store.pipe(isAuthenticated);
|
|
198
|
+
}
|
|
199
|
+
canActivate(next, state) {
|
|
200
|
+
return this.authenticated$.pipe(tap(auth => {
|
|
201
|
+
if (!auth) {
|
|
202
|
+
this.store.dispatch(signIn({ returnUrl: state.url }));
|
|
203
|
+
}
|
|
204
|
+
}), first());
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthGuard, deps: [{ token: i1$1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
208
|
+
AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthGuard, providedIn: 'root' });
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AuthGuard, decorators: [{
|
|
210
|
+
type: Injectable,
|
|
211
|
+
args: [{
|
|
212
|
+
providedIn: 'root',
|
|
213
|
+
}]
|
|
214
|
+
}], ctorParameters: function () { return [{ type: i1$1.Store }]; } });
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Generated bundle index. Do not edit.
|
|
218
|
+
*/
|
|
219
|
+
|
|
220
|
+
export { AuthGuard, AuthModule, getUser, isAuthenticated, signIn, signOut, signedIn, signedOut };
|
|
221
|
+
//# 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 init = createAction('[@thecla/auth0-angular] init');\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, OnInitEffects } from '@ngrx/effects';\nimport { of } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\nimport { init, signedIn, signedOut, signIn, signInCompleted, signInFailed, signOut } from '../actions/auth.actions';\nimport { AuthService } from '../auth.service';\n\n@Injectable()\nexport class AuthEffects implements OnInitEffects {\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(() =>\n this.actions$.pipe(\n ofType(init),\n switchMap(() => {\n const params = window.location.search;\n\n if (params.includes('code=') && params.includes('state=')) {\n return this.completeSignIn();\n } else {\n return this.auth.isAuthenticated().pipe(\n switchMap(auth => this.getAuthResult(auth)),\n catchError(error => of(signInFailed({ error })))\n );\n }\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 public ngrxOnInitEffects() {\n return init();\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() {\n return this.auth.handleRedirectCallback().pipe(\n map(state => signInCompleted({ state })),\n catchError(error => of(signInFailed({ error })))\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":["i1.AuthConfig","i2.AuthService","i1.AuthService","i1","i2"],"mappings":";;;;;;;;;;;;MAAsB,UAAU,CAAA;AAS/B;;ACNM,MAAM,IAAI,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;AAEpD,MAAA,MAAM,GAAG,YAAY,CAAC,iCAAiC,EAAE,KAAK,EAAyB,EAAE;AAE/F,MAAM,eAAe,GAAG,YAAY,CACzC,2CAA2C,EAC3C,KAAK,EAAiC,CACvC,CAAC;AAEW,MAAA,QAAQ,GAAG,YAAY,CAAC,mCAAmC,EAAE,KAAK,EAAqB,EAAE;AAE/F,MAAM,YAAY,GAAG,YAAY,CAAC,wCAAwC,EAAE,KAAK,EAAoB,CAAC,CAAC;MAEjG,OAAO,GAAG,YAAY,CAAC,kCAAkC,EAAE;MAE3D,SAAS,GAAG,YAAY,CAAC,oCAAoC;;MCT7D,WAAW,CAAA;AAGtB,IAAA,WAAA,CAAoC,MAAkB,EAAA;QAAlB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;AACpD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,YAAA,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM;YACnD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;AACtD,SAAA,CAAC,CAAC;KACJ;IAEM,eAAe,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KAClC;AAEM,IAAA,iBAAiB,CAAC,QAA4B,EAAA;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;KACtF;IAEM,sBAAsB,GAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,QAA8B,CAAC,CAAC,CAAC;KAC7G;IAEM,OAAO,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAgB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;KACnF;IAEM,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC5C;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KAC3E;AAEO,IAAA,MAAM,YAAY,GAAA;AACxB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;AAEhC,QAAA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3C;;wGA3CU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,WAAW,CAAA;AA6DtB,IAAA,WAAA,CACmB,QAAiB,EACjB,IAAiB,EACjB,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QA/DjB,IAAO,CAAA,OAAA,GAAG,YAAY,CACpC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,MAAM,CAAC,EACd,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/E,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;AAEc,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,MAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,EACvB,SAAS,CAAC,MACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CACtB,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAC/B,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjD,CACF,CACF,CACF,CAAC;QAEc,IAAS,CAAA,SAAA,GAAG,YAAY,CACtC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,EACvB,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1F,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEc,IAAQ,CAAA,QAAA,GAAG,YAAY,CAAC,MACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,OAAO,CAAC,EACf,GAAG,CAAC,MAAK;YACP,IAAI;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,aAAA;AAAC,YAAA,MAAM,GAAE;AACZ,SAAC,CAAC,EACF,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,CACvB,CACF,CAAC;QAEc,IAAK,CAAA,KAAA,GAAG,YAAY,CAAC,MACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,EACZ,SAAS,CAAC,MAAK;AACb,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEtC,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzD,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CACrC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAC3C,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjD,CAAC;AACH,aAAA;SACF,CAAC,CACH,CACF,CAAC;KAME;IAEG,iBAAiB,GAAA;QACtB,OAAO,IAAI,EAAE,CAAC;KACf;AAEO,IAAA,aAAa,CAAC,IAAa,EAAA;AACjC,QAAA,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;AACxB,SAAA;KACF;IAEO,cAAc,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAC5C,GAAG,CAAC,KAAK,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EACxC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjD,CAAC;KACH;;wGApFU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;MCFE,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoC,IAAiB,EAAA;QAAjB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;KAAI;IAElD,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;AAC3D,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACpG,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,OAAyB,EAAA;QAC5C,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAErD,OAAO,CAAC,UAAU,CAAC;KACpB;AAEO,IAAA,SAAS,CAAC,OAAyB,EAAA;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAE1C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACvG;;2GArBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACDJ,MAAM,gBAAgB,GAAU;AACrC,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,aAAa,EAAE,KAAK;CACrB,CAAC;AAEK,MAAM,mBAAmB,GAAU;AACxC,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,aAAa,EAAE,KAAK;CACrB,CAAC;AAEF,MAAM,WAAW,GAAG,aAAa,CAC/B,mBAAmB,EACnB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM;AACjC,IAAA,GAAG,KAAK;AACR,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,aAAa,EAAE,IAAI;IACnB,IAAI;CACL,CAAC,CAAC,EACH,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,gBAAgB,CAAC,EACpC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,gBAAgB,CAAC,CACxC,CAAC;AAEc,SAAA,OAAO,CAAC,KAAwB,EAAE,MAAc,EAAA;AAC9D,IAAA,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC;;ACvBO,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,MAAM,WAAW,GAAG,qBAAqB,CAAQ,UAAU,CAAC,CAAC;AAE7D,MAAM,eAAe,GAAG,IAAI,CACjC,MAAM,CAAC,WAAW,CAAC,EACnB,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EACtC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,EACjC;AAEK,MAAM,OAAO,GAAG,IAAI,CACzB,MAAM,CAAC,WAAW,CAAC,EACnB,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EACtC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;;MCHb,UAAU,CAAA;IACd,OAAO,OAAO,CAAC,MAAkB,EAAA;QACtC,OAAO;AACL,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,UAAU;AACnB,oBAAA,QAAQ,EAAE,MAAM;AACjB,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,KAAK,EAAE,IAAI;AACZ,iBAAA;AACF,aAAA;SACF,CAAC;KACH;;uGAhBU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAV,UAAU,EAAA,OAAA,EAAA,CAAAC,IAAA,CAAA,kBAAA,EAAAC,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAHX,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;2FAGnF,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/F,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAA;;;MCJY,SAAS,CAAA;AAGpB,IAAA,WAAA,CAAoC,KAAY,EAAA;QAAZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QAF/B,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAEf;IAE7C,WAAW,CAAC,IAA4B,EAAE,KAA0B,EAAA;QACzE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,GAAG,CAAC,IAAI,IAAG;YACT,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvD,aAAA;AACH,SAAC,CAAC,EACF,KAAK,EAAE,CACR,CAAC;KACH;;sGAdU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cAFR,MAAM,EAAA,CAAA,CAAA;2FAEP,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACTD;;AAEG;;;;"}
|
|
File without changes
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Profile } from '../state/auth.state';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const init: import("@ngrx/store").ActionCreator<"[@thecla/auth0-angular] init", () => import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] init">>;
|
|
3
|
+
export declare const signIn: import("@ngrx/store").ActionCreator<"[@thecla/auth0-angular] sign in", (props: {
|
|
3
4
|
returnUrl: string;
|
|
4
5
|
}) => {
|
|
5
6
|
returnUrl: string;
|
|
6
|
-
} & import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular
|
|
7
|
-
export declare const signInCompleted: import("@ngrx/store").ActionCreator<"@thecla/auth0-angular
|
|
7
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] sign in">>;
|
|
8
|
+
export declare const signInCompleted: import("@ngrx/store").ActionCreator<"[@thecla/auth0-angular] sign in completed", (props: {
|
|
8
9
|
state: {
|
|
9
10
|
target: string;
|
|
10
11
|
};
|
|
@@ -12,12 +13,16 @@ export declare const signInCompleted: import("@ngrx/store").ActionCreator<"@thec
|
|
|
12
13
|
state: {
|
|
13
14
|
target: string;
|
|
14
15
|
};
|
|
15
|
-
} & import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular
|
|
16
|
-
export declare const signedIn: import("@ngrx/store").ActionCreator<"@thecla/auth0-angular
|
|
17
|
-
|
|
16
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] sign in completed">>;
|
|
17
|
+
export declare const signedIn: import("@ngrx/store").ActionCreator<"[@thecla/auth0-angular] signed in", (props: {
|
|
18
|
+
user: Profile;
|
|
19
|
+
}) => {
|
|
20
|
+
user: Profile;
|
|
21
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] signed in">>;
|
|
22
|
+
export declare const signInFailed: import("@ngrx/store").ActionCreator<"[@thecla/auth0-angular] sign in failed", (props: {
|
|
18
23
|
error: Error;
|
|
19
24
|
}) => {
|
|
20
25
|
error: Error;
|
|
21
|
-
} & import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular
|
|
22
|
-
export declare const signOut: import("@ngrx/store").ActionCreator<"@thecla/auth0-angular
|
|
23
|
-
export declare const signedOut: import("@ngrx/store").ActionCreator<"@thecla/auth0-angular
|
|
26
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] sign in failed">>;
|
|
27
|
+
export declare const signOut: import("@ngrx/store").ActionCreator<"[@thecla/auth0-angular] sign out", () => import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] sign out">>;
|
|
28
|
+
export declare const signedOut: import("@ngrx/store").ActionCreator<"[@thecla/auth0-angular] signed out", () => import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] signed out">>;
|
package/lib/auth.guard.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class AuthGuard implements CanActivate {
|
|
5
5
|
private readonly store;
|
|
6
6
|
private readonly authenticated$;
|
|
7
|
-
constructor(store: Store
|
|
7
|
+
constructor(store: Store);
|
|
8
8
|
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): import("rxjs").Observable<boolean>;
|
|
9
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthGuard, never>;
|
|
10
10
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthGuard>;
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import { Router } from '@angular/router';
|
|
2
|
-
import { Actions } from '@ngrx/effects';
|
|
2
|
+
import { Actions, OnInitEffects } from '@ngrx/effects';
|
|
3
3
|
import { AuthService } from '../auth.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class AuthEffects {
|
|
5
|
+
export declare class AuthEffects implements OnInitEffects {
|
|
6
6
|
private readonly actions$;
|
|
7
7
|
private readonly auth;
|
|
8
8
|
private readonly router;
|
|
9
9
|
readonly signIn$: import("rxjs").Observable<never> & import("@ngrx/effects").CreateEffectMetadata;
|
|
10
|
-
readonly signInCompleted$: import("rxjs").Observable<(
|
|
10
|
+
readonly signInCompleted$: import("rxjs").Observable<({
|
|
11
|
+
user: import("@thecla/auth0-angular").Profile;
|
|
12
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] signed in">) | ({
|
|
11
13
|
error: Error;
|
|
12
|
-
} & import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular
|
|
14
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] sign in failed">)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
13
15
|
readonly redirect$: import("rxjs").Observable<boolean> & import("@ngrx/effects").CreateEffectMetadata;
|
|
14
|
-
readonly signOut$: import("rxjs").Observable<import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular
|
|
15
|
-
readonly init$:
|
|
16
|
+
readonly signOut$: import("rxjs").Observable<import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] signed out">> & import("@ngrx/effects").CreateEffectMetadata;
|
|
17
|
+
readonly init$: import("rxjs").Observable<import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] signed out"> | ({
|
|
16
18
|
state: {
|
|
17
19
|
target: string;
|
|
18
20
|
};
|
|
19
|
-
} & import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular
|
|
21
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] sign in completed">) | ({
|
|
22
|
+
user: import("@thecla/auth0-angular").Profile;
|
|
23
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] signed in">) | ({
|
|
20
24
|
error: Error;
|
|
21
|
-
} & import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular
|
|
22
|
-
error: Error;
|
|
23
|
-
} & import("@ngrx/store/src/models").TypedAction<"@thecla/auth0-angular/sign-in-failed">)>) & import("@ngrx/effects").CreateEffectMetadata;
|
|
25
|
+
} & import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] sign in failed">)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
24
26
|
constructor(actions$: Actions, auth: AuthService, router: Router);
|
|
27
|
+
ngrxOnInitEffects(): import("@ngrx/store/src/models").TypedAction<"[@thecla/auth0-angular] init">;
|
|
25
28
|
private getAuthResult;
|
|
26
29
|
private completeSignIn;
|
|
27
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthEffects, never>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thecla/auth0-angular",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"author": "Hendrik Wouters",
|
|
5
5
|
"description": "Angular module using NGRX to authenticate with Auth0",
|
|
6
6
|
"repository": {
|
|
@@ -18,22 +18,34 @@
|
|
|
18
18
|
},
|
|
19
19
|
"homepage": "https://github.com/hwouters/auth0-angular#readme",
|
|
20
20
|
"peerDependencies": {
|
|
21
|
-
"@angular/common": "^
|
|
22
|
-
"@angular/core": "^
|
|
23
|
-
"@angular/router": "^
|
|
24
|
-
"@ngrx/effects": "^
|
|
25
|
-
"@ngrx/store": "^
|
|
26
|
-
"@auth0/auth0-spa-js": "^1.15.0"
|
|
27
|
-
"rxjs": "^6.5.4"
|
|
21
|
+
"@angular/common": "^14.0.0",
|
|
22
|
+
"@angular/core": "^14.0.0",
|
|
23
|
+
"@angular/router": "^14.0.0",
|
|
24
|
+
"@ngrx/effects": "^14.0.0",
|
|
25
|
+
"@ngrx/store": "^14.0.0",
|
|
26
|
+
"@auth0/auth0-spa-js": "^1.15.0"
|
|
28
27
|
},
|
|
29
28
|
"dependencies": {
|
|
30
29
|
"tslib": "^2.0.0"
|
|
31
30
|
},
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"fesm2015": "fesm2015/thecla-auth0-angular.
|
|
37
|
-
"typings": "
|
|
31
|
+
"module": "fesm2015/thecla-auth0-angular.mjs",
|
|
32
|
+
"es2020": "fesm2020/thecla-auth0-angular.mjs",
|
|
33
|
+
"esm2020": "esm2020/thecla-auth0-angular.mjs",
|
|
34
|
+
"fesm2020": "fesm2020/thecla-auth0-angular.mjs",
|
|
35
|
+
"fesm2015": "fesm2015/thecla-auth0-angular.mjs",
|
|
36
|
+
"typings": "index.d.ts",
|
|
37
|
+
"exports": {
|
|
38
|
+
"./package.json": {
|
|
39
|
+
"default": "./package.json"
|
|
40
|
+
},
|
|
41
|
+
".": {
|
|
42
|
+
"types": "./index.d.ts",
|
|
43
|
+
"esm2020": "./esm2020/thecla-auth0-angular.mjs",
|
|
44
|
+
"es2020": "./fesm2020/thecla-auth0-angular.mjs",
|
|
45
|
+
"es2015": "./fesm2015/thecla-auth0-angular.mjs",
|
|
46
|
+
"node": "./fesm2015/thecla-auth0-angular.mjs",
|
|
47
|
+
"default": "./fesm2020/thecla-auth0-angular.mjs"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
38
50
|
"sideEffects": false
|
|
39
51
|
}
|