@memberjunction/ng-auth-services 2.90.0 → 2.92.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/dist/lib/AngularAuthProviderFactory.d.ts +46 -0
- package/dist/lib/AngularAuthProviderFactory.d.ts.map +1 -0
- package/dist/lib/AngularAuthProviderFactory.js +123 -0
- package/dist/lib/AngularAuthProviderFactory.js.map +1 -0
- package/dist/lib/IAuthProvider.d.ts +55 -0
- package/dist/lib/IAuthProvider.d.ts.map +1 -0
- package/dist/lib/IAuthProvider.js +2 -0
- package/dist/lib/IAuthProvider.js.map +1 -0
- package/dist/lib/auth-services.module.d.ts +10 -12
- package/dist/lib/auth-services.module.d.ts.map +1 -1
- package/dist/lib/auth-services.module.js +57 -74
- package/dist/lib/auth-services.module.js.map +1 -1
- package/dist/lib/mjexplorer-auth-base.service.d.ts +97 -12
- package/dist/lib/mjexplorer-auth-base.service.d.ts.map +1 -1
- package/dist/lib/mjexplorer-auth-base.service.js +112 -11
- package/dist/lib/mjexplorer-auth-base.service.js.map +1 -1
- package/dist/lib/providers/mjexplorer-auth0-provider.service.d.ts +49 -0
- package/dist/lib/providers/mjexplorer-auth0-provider.service.d.ts.map +1 -0
- package/dist/lib/providers/mjexplorer-auth0-provider.service.js +131 -0
- package/dist/lib/providers/mjexplorer-auth0-provider.service.js.map +1 -0
- package/dist/lib/providers/mjexplorer-msal-provider.service.d.ts +58 -0
- package/dist/lib/providers/mjexplorer-msal-provider.service.d.ts.map +1 -0
- package/dist/lib/providers/mjexplorer-msal-provider.service.js +267 -0
- package/dist/lib/providers/mjexplorer-msal-provider.service.js.map +1 -0
- package/dist/lib/providers/mjexplorer-okta-provider.service.d.ts +61 -0
- package/dist/lib/providers/mjexplorer-okta-provider.service.d.ts.map +1 -0
- package/dist/lib/providers/mjexplorer-okta-provider.service.js +379 -0
- package/dist/lib/providers/mjexplorer-okta-provider.service.js.map +1 -0
- package/dist/lib/redirect.component.d.ts +16 -0
- package/dist/lib/redirect.component.d.ts.map +1 -0
- package/dist/lib/redirect.component.js +67 -0
- package/dist/lib/redirect.component.js.map +1 -0
- package/dist/public-api.d.ts +6 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +9 -2
- package/dist/public-api.js.map +1 -1
- package/package.json +5 -3
- package/dist/lib/mjexplorer-auth0-provider.service.d.ts +0 -18
- package/dist/lib/mjexplorer-auth0-provider.service.d.ts.map +0 -1
- package/dist/lib/mjexplorer-auth0-provider.service.js +0 -45
- package/dist/lib/mjexplorer-auth0-provider.service.js.map +0 -1
- package/dist/lib/mjexplorer-msal-provider.service.d.ts +0 -24
- package/dist/lib/mjexplorer-msal-provider.service.d.ts.map +0 -1
- package/dist/lib/mjexplorer-msal-provider.service.js +0 -108
- package/dist/lib/mjexplorer-msal-provider.service.js.map +0 -1
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { MJAuthBase } from './mjexplorer-auth-base.service';
|
|
2
|
-
import { AuthService, User } from '@auth0/auth0-angular';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class MJAuth0Provider extends MJAuthBase {
|
|
6
|
-
auth: AuthService;
|
|
7
|
-
constructor(auth: AuthService);
|
|
8
|
-
login(options?: any): any;
|
|
9
|
-
logout(): Promise<void>;
|
|
10
|
-
refresh(): Promise<Observable<any>>;
|
|
11
|
-
getUser(): Promise<Observable<User | null | undefined>>;
|
|
12
|
-
isAuthenticated(): Promise<Observable<boolean>>;
|
|
13
|
-
getUserClaims(): Promise<Observable<any>>;
|
|
14
|
-
checkExpiredTokenError(error: string): boolean;
|
|
15
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MJAuth0Provider, never>;
|
|
16
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<MJAuth0Provider>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=mjexplorer-auth0-provider.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mjexplorer-auth0-provider.service.d.ts","sourceRoot":"","sources":["../../src/lib/mjexplorer-auth0-provider.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAW,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAM,MAAM,MAAM,CAAC;;AAEtC,qBAGa,eAAgB,SAAQ,UAAU;IAE1B,IAAI,EAAE,WAAW;gBAAjB,IAAI,EAAE,WAAW;IAO3B,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG;IAIrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAK1C,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAIvD,eAAe;IAIf,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAI/C,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;yCAlCnC,eAAe;6CAAf,eAAe;CAsC3B"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { MJAuthBase } from './mjexplorer-auth-base.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@auth0/auth0-angular";
|
|
5
|
-
export class MJAuth0Provider extends MJAuthBase {
|
|
6
|
-
auth;
|
|
7
|
-
constructor(auth) {
|
|
8
|
-
super();
|
|
9
|
-
this.auth = auth;
|
|
10
|
-
this.auth.isAuthenticated$.subscribe((loggedIn) => {
|
|
11
|
-
this.setAuthenticated(loggedIn);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
login(options) {
|
|
15
|
-
this.auth.loginWithRedirect(options);
|
|
16
|
-
}
|
|
17
|
-
async logout() {
|
|
18
|
-
this.auth.logout({ logoutParams: { returnTo: document.location.origin } });
|
|
19
|
-
}
|
|
20
|
-
async refresh() {
|
|
21
|
-
await this.auth.getAccessTokenSilently();
|
|
22
|
-
return this.auth.idTokenClaims$;
|
|
23
|
-
}
|
|
24
|
-
async getUser() {
|
|
25
|
-
return this.auth.user$;
|
|
26
|
-
}
|
|
27
|
-
async isAuthenticated() {
|
|
28
|
-
return this.auth.isAuthenticated$;
|
|
29
|
-
}
|
|
30
|
-
async getUserClaims() {
|
|
31
|
-
return this.auth.idTokenClaims$;
|
|
32
|
-
}
|
|
33
|
-
checkExpiredTokenError(error) {
|
|
34
|
-
return error?.includes('jwt expired');
|
|
35
|
-
}
|
|
36
|
-
static ɵfac = function MJAuth0Provider_Factory(t) { return new (t || MJAuth0Provider)(i0.ɵɵinject(i1.AuthService)); };
|
|
37
|
-
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJAuth0Provider, factory: MJAuth0Provider.ɵfac, providedIn: 'root' });
|
|
38
|
-
}
|
|
39
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAuth0Provider, [{
|
|
40
|
-
type: Injectable,
|
|
41
|
-
args: [{
|
|
42
|
-
providedIn: 'root'
|
|
43
|
-
}]
|
|
44
|
-
}], () => [{ type: i1.AuthService }], null); })();
|
|
45
|
-
//# sourceMappingURL=mjexplorer-auth0-provider.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mjexplorer-auth0-provider.service.js","sourceRoot":"","sources":["../../src/lib/mjexplorer-auth0-provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;;;AAO5D,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAE1B;IAAnB,YAAmB,IAAiB;QAClC,KAAK,EAAE,CAAC;QADS,SAAI,GAAJ,IAAI,CAAa;QAElC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,KAAK,CAAC,OAAa;QAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;IAED,sBAAsB,CAAC,KAAa;QAClC,OAAO,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;yEApCU,eAAe;gEAAf,eAAe,WAAf,eAAe,mBAFd,MAAM;;iFAEP,eAAe;cAH3B,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { MJAuthBase } from './mjexplorer-auth-base.service';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { MsalBroadcastService, MsalService } from '@azure/msal-angular';
|
|
4
|
-
import { AccountInfo } from '@azure/msal-common';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class MJMSALProvider extends MJAuthBase {
|
|
7
|
-
auth: MsalService;
|
|
8
|
-
private msalBroadcastService;
|
|
9
|
-
private readonly _destroying$;
|
|
10
|
-
private readonly _initializationCompleted$;
|
|
11
|
-
constructor(auth: MsalService, msalBroadcastService: MsalBroadcastService);
|
|
12
|
-
private initializeMSAL;
|
|
13
|
-
private ensureInitialized;
|
|
14
|
-
login(options?: any): Promise<any>;
|
|
15
|
-
logout(): Promise<void>;
|
|
16
|
-
refresh(): Promise<Observable<any>>;
|
|
17
|
-
getUser(): Promise<AccountInfo | null>;
|
|
18
|
-
isAuthenticated(): Promise<Observable<boolean>>;
|
|
19
|
-
getUserClaims(): Promise<Observable<any>>;
|
|
20
|
-
checkExpiredTokenError(error: string): boolean;
|
|
21
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MJMSALProvider, never>;
|
|
22
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<MJMSALProvider>;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=mjexplorer-msal-provider.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mjexplorer-msal-provider.service.d.ts","sourceRoot":"","sources":["../../src/lib/mjexplorer-msal-provider.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAmB,UAAU,EAA2F,MAAM,MAAM,CAAC;AAC5I,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAwB,MAAM,oBAAoB,CAAC;;AAIvE,qBAGa,cAAe,SAAQ,UAAU;IAKzB,IAAI,EAAE,WAAW;IAAE,OAAO,CAAC,oBAAoB;IAHlE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAuC;gBAE9D,IAAI,EAAE,WAAW,EAAU,oBAAoB,EAAE,oBAAoB;YAK1E,cAAc;YAcd,iBAAiB;IAMhB,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBpC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAS1C,OAAO,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKtC,eAAe;IAKf,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAwB/C,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;yCAhGnC,cAAc;6CAAd,cAAc;CAoG1B"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { MJAuthBase } from './mjexplorer-auth-base.service';
|
|
3
|
-
import { BehaviorSubject, Subject, catchError, filter, from, map, of, throwError, takeUntil, take, firstValueFrom } from 'rxjs';
|
|
4
|
-
import { CacheLookupPolicy, InteractionRequiredAuthError, InteractionStatus } from '@azure/msal-browser';
|
|
5
|
-
import { LogError } from '@memberjunction/core';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@azure/msal-angular";
|
|
8
|
-
export class MJMSALProvider extends MJAuthBase {
|
|
9
|
-
auth;
|
|
10
|
-
msalBroadcastService;
|
|
11
|
-
_destroying$ = new Subject();
|
|
12
|
-
_initializationCompleted$ = new BehaviorSubject(false);
|
|
13
|
-
constructor(auth, msalBroadcastService) {
|
|
14
|
-
super();
|
|
15
|
-
this.auth = auth;
|
|
16
|
-
this.msalBroadcastService = msalBroadcastService;
|
|
17
|
-
this.initializeMSAL();
|
|
18
|
-
}
|
|
19
|
-
async initializeMSAL() {
|
|
20
|
-
await this.auth.instance.initialize();
|
|
21
|
-
// After initialization logic
|
|
22
|
-
this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
|
|
23
|
-
this.msalBroadcastService.inProgress$
|
|
24
|
-
.pipe(filter((status) => status === InteractionStatus.None), takeUntil(this._destroying$))
|
|
25
|
-
.subscribe(() => {
|
|
26
|
-
this.setAuthenticated(this.auth.instance.getAllAccounts().length > 0);
|
|
27
|
-
this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
|
|
28
|
-
this._initializationCompleted$.next(true); // Signal initialization complete
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
// Ensure methods wait for initialization
|
|
32
|
-
async ensureInitialized() {
|
|
33
|
-
if (!this._initializationCompleted$.value) {
|
|
34
|
-
await firstValueFrom(this._initializationCompleted$.pipe(filter(done => done), take(1)));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
async login(options) {
|
|
38
|
-
await this.ensureInitialized();
|
|
39
|
-
const silentRequest = {
|
|
40
|
-
scopes: ['User.Read', 'email', 'profile']
|
|
41
|
-
};
|
|
42
|
-
this.auth.loginRedirect(silentRequest).subscribe({
|
|
43
|
-
next: () => {
|
|
44
|
-
this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
|
|
45
|
-
window.location.reload();
|
|
46
|
-
},
|
|
47
|
-
error: (error) => {
|
|
48
|
-
LogError(error);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
async logout() {
|
|
53
|
-
await this.ensureInitialized();
|
|
54
|
-
this.auth.logoutRedirect().subscribe(() => {
|
|
55
|
-
window.location.reload();
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
async refresh() {
|
|
59
|
-
await this.ensureInitialized();
|
|
60
|
-
const silentRequest = {
|
|
61
|
-
scopes: ['User.Read', 'email', 'profile'],
|
|
62
|
-
cacheLookupPolicy: CacheLookupPolicy.RefreshTokenAndNetwork,
|
|
63
|
-
};
|
|
64
|
-
return from(this.auth.instance.acquireTokenSilent(silentRequest));
|
|
65
|
-
}
|
|
66
|
-
async getUser() {
|
|
67
|
-
await this.ensureInitialized();
|
|
68
|
-
return this.auth.instance.getActiveAccount();
|
|
69
|
-
}
|
|
70
|
-
async isAuthenticated() {
|
|
71
|
-
await this.ensureInitialized();
|
|
72
|
-
return of(this.auth.instance.getActiveAccount() != null);
|
|
73
|
-
}
|
|
74
|
-
async getUserClaims() {
|
|
75
|
-
await this.ensureInitialized();
|
|
76
|
-
const account = this.auth.instance.getActiveAccount();
|
|
77
|
-
const silentRequest = {
|
|
78
|
-
scopes: ['User.Read', 'email', 'profile'],
|
|
79
|
-
account: account,
|
|
80
|
-
cacheLookupPolicy: CacheLookupPolicy.RefreshTokenAndNetwork
|
|
81
|
-
};
|
|
82
|
-
if (account) {
|
|
83
|
-
return from(this.auth.instance.acquireTokenSilent(silentRequest)).pipe(map((response) => response), catchError((error) => {
|
|
84
|
-
LogError(error);
|
|
85
|
-
if (error instanceof InteractionRequiredAuthError) {
|
|
86
|
-
return from(this.auth.instance.acquireTokenSilent(silentRequest));
|
|
87
|
-
}
|
|
88
|
-
this.authenticated = false;
|
|
89
|
-
return throwError(error);
|
|
90
|
-
}));
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return from(this.auth.instance.acquireTokenSilent(silentRequest));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
checkExpiredTokenError(error) {
|
|
97
|
-
return error?.trim().toLowerCase().includes('you need to be authorized to perform');
|
|
98
|
-
}
|
|
99
|
-
static ɵfac = function MJMSALProvider_Factory(t) { return new (t || MJMSALProvider)(i0.ɵɵinject(i1.MsalService), i0.ɵɵinject(i1.MsalBroadcastService)); };
|
|
100
|
-
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJMSALProvider, factory: MJMSALProvider.ɵfac, providedIn: 'root' });
|
|
101
|
-
}
|
|
102
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJMSALProvider, [{
|
|
103
|
-
type: Injectable,
|
|
104
|
-
args: [{
|
|
105
|
-
providedIn: 'root'
|
|
106
|
-
}]
|
|
107
|
-
}], () => [{ type: i1.MsalService }, { type: i1.MsalBroadcastService }], null); })();
|
|
108
|
-
//# sourceMappingURL=mjexplorer-msal-provider.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mjexplorer-msal-provider.service.js","sourceRoot":"","sources":["../../src/lib/mjexplorer-msal-provider.service.ts"],"names":[],"mappings":"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"}
|