@memberjunction/server 5.14.0 → 5.16.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/auth/index.d.ts +0 -3
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +5 -7
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.js +2 -2
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/config.d.ts +37 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -3
- package/dist/context.js.map +1 -1
- package/dist/generated/generated.d.ts +169 -0
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +909 -1
- package/dist/generated/generated.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/resolvers/DatasetResolver.d.ts +5 -0
- package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
- package/dist/resolvers/DatasetResolver.js +35 -0
- package/dist/resolvers/DatasetResolver.js.map +1 -1
- package/package.json +60 -59
- package/src/__tests__/unifiedAuth.test.ts +3 -2
- package/src/auth/__tests__/backward-compatibility.test.ts +2 -3
- package/src/auth/index.ts +5 -8
- package/src/auth/initializeProviders.ts +2 -2
- package/src/config.ts +8 -0
- package/src/context.ts +3 -3
- package/src/generated/generated.ts +635 -2
- package/src/index.ts +21 -3
- package/src/resolvers/DatasetResolver.ts +36 -0
- package/dist/auth/AuthProviderFactory.d.ts +0 -68
- package/dist/auth/AuthProviderFactory.d.ts.map +0 -1
- package/dist/auth/AuthProviderFactory.js +0 -155
- package/dist/auth/AuthProviderFactory.js.map +0 -1
- package/dist/auth/BaseAuthProvider.d.ts +0 -41
- package/dist/auth/BaseAuthProvider.d.ts.map +0 -1
- package/dist/auth/BaseAuthProvider.js +0 -102
- package/dist/auth/BaseAuthProvider.js.map +0 -1
- package/dist/auth/IAuthProvider.d.ts +0 -46
- package/dist/auth/IAuthProvider.d.ts.map +0 -1
- package/dist/auth/IAuthProvider.js +0 -2
- package/dist/auth/IAuthProvider.js.map +0 -1
- package/dist/auth/providers/Auth0Provider.d.ts +0 -18
- package/dist/auth/providers/Auth0Provider.d.ts.map +0 -1
- package/dist/auth/providers/Auth0Provider.js +0 -52
- package/dist/auth/providers/Auth0Provider.js.map +0 -1
- package/dist/auth/providers/CognitoProvider.d.ts +0 -18
- package/dist/auth/providers/CognitoProvider.d.ts.map +0 -1
- package/dist/auth/providers/CognitoProvider.js +0 -56
- package/dist/auth/providers/CognitoProvider.js.map +0 -1
- package/dist/auth/providers/GoogleProvider.d.ts +0 -18
- package/dist/auth/providers/GoogleProvider.d.ts.map +0 -1
- package/dist/auth/providers/GoogleProvider.js +0 -51
- package/dist/auth/providers/GoogleProvider.js.map +0 -1
- package/dist/auth/providers/MSALProvider.d.ts +0 -18
- package/dist/auth/providers/MSALProvider.d.ts.map +0 -1
- package/dist/auth/providers/MSALProvider.js +0 -52
- package/dist/auth/providers/MSALProvider.js.map +0 -1
- package/dist/auth/providers/OktaProvider.d.ts +0 -18
- package/dist/auth/providers/OktaProvider.d.ts.map +0 -1
- package/dist/auth/providers/OktaProvider.js +0 -52
- package/dist/auth/providers/OktaProvider.js.map +0 -1
- package/dist/auth/tokenExpiredError.d.ts +0 -5
- package/dist/auth/tokenExpiredError.d.ts.map +0 -1
- package/dist/auth/tokenExpiredError.js +0 -12
- package/dist/auth/tokenExpiredError.js.map +0 -1
- package/src/auth/AuthProviderFactory.ts +0 -182
- package/src/auth/BaseAuthProvider.ts +0 -137
- package/src/auth/IAuthProvider.ts +0 -54
- package/src/auth/providers/Auth0Provider.ts +0 -45
- package/src/auth/providers/CognitoProvider.ts +0 -50
- package/src/auth/providers/GoogleProvider.ts +0 -45
- package/src/auth/providers/MSALProvider.ts +0 -45
- package/src/auth/providers/OktaProvider.ts +0 -46
- package/src/auth/tokenExpiredError.ts +0 -12
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Auth0Provider.js","sourceRoot":"","sources":["../../../src/auth/providers/Auth0Provider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,gBAAgB;IACjD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,kCAAkC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAwC,IAAI,KAAK,CAAC;QAEpF,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,OAAO,SAAS,IAAI,WAAW,IAAI,SAAS,CAAC;IAC/C,CAAC;CACF,CAAA;AAnCY,aAAa;IADzB,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC;;GAC5B,aAAa,CAmCzB"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { JwtPayload } from 'jsonwebtoken';
|
|
2
|
-
import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
|
|
3
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
4
|
-
/**
|
|
5
|
-
* AWS Cognito authentication provider implementation
|
|
6
|
-
*/
|
|
7
|
-
export declare class CognitoProvider extends BaseAuthProvider {
|
|
8
|
-
constructor(config: AuthProviderConfig);
|
|
9
|
-
/**
|
|
10
|
-
* Extracts user information from Cognito JWT payload
|
|
11
|
-
*/
|
|
12
|
-
extractUserInfo(payload: JwtPayload): AuthUserInfo;
|
|
13
|
-
/**
|
|
14
|
-
* Validates Cognito-specific configuration
|
|
15
|
-
*/
|
|
16
|
-
validateConfig(): boolean;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=CognitoProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CognitoProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/CognitoProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AACH,qBACa,eAAgB,SAAQ,gBAAgB;gBACvC,MAAM,EAAE,kBAAkB;IAItC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAoBlD;;OAEG;IACH,cAAc,IAAI,OAAO;CAQ1B"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { RegisterClass } from '@memberjunction/global';
|
|
11
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
12
|
-
/**
|
|
13
|
-
* AWS Cognito authentication provider implementation
|
|
14
|
-
*/
|
|
15
|
-
let CognitoProvider = class CognitoProvider extends BaseAuthProvider {
|
|
16
|
-
constructor(config) {
|
|
17
|
-
super(config);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Extracts user information from Cognito JWT payload
|
|
21
|
-
*/
|
|
22
|
-
extractUserInfo(payload) {
|
|
23
|
-
// Cognito uses custom claims with 'cognito:' prefix for some fields
|
|
24
|
-
const email = payload.email ||
|
|
25
|
-
payload['cognito:username'];
|
|
26
|
-
const fullName = payload.name;
|
|
27
|
-
const firstName = payload.given_name;
|
|
28
|
-
const lastName = payload.family_name;
|
|
29
|
-
const preferredUsername = payload['cognito:username'] ||
|
|
30
|
-
payload.preferred_username ||
|
|
31
|
-
email;
|
|
32
|
-
return {
|
|
33
|
-
email,
|
|
34
|
-
firstName: firstName || fullName?.split(' ')[0],
|
|
35
|
-
lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
|
|
36
|
-
fullName,
|
|
37
|
-
preferredUsername
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Validates Cognito-specific configuration
|
|
42
|
-
*/
|
|
43
|
-
validateConfig() {
|
|
44
|
-
const baseValid = super.validateConfig();
|
|
45
|
-
const hasClientId = !!this.config.clientId;
|
|
46
|
-
const hasRegion = !!this.config.region;
|
|
47
|
-
const hasUserPoolId = !!this.config.userPoolId;
|
|
48
|
-
return baseValid && hasClientId && hasRegion && hasUserPoolId;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
CognitoProvider = __decorate([
|
|
52
|
-
RegisterClass(BaseAuthProvider, 'cognito'),
|
|
53
|
-
__metadata("design:paramtypes", [Object])
|
|
54
|
-
], CognitoProvider);
|
|
55
|
-
export { CognitoProvider };
|
|
56
|
-
//# sourceMappingURL=CognitoProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CognitoProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/CognitoProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,gBAAgB;IACnD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,oEAAoE;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B;YACnC,OAAO,CAAC,kBAAkB,CAAuB,CAAC;QAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAuB;YAClD,OAAO,CAAC,kBAAwC;YAChD,KAAK,CAAC;QAE/B,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAE/C,OAAO,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,aAAa,CAAC;IAChE,CAAC;CACF,CAAA;AAvCY,eAAe;IAD3B,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC;;GAC9B,eAAe,CAuC3B"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { JwtPayload } from 'jsonwebtoken';
|
|
2
|
-
import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
|
|
3
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
4
|
-
/**
|
|
5
|
-
* Google Identity Platform authentication provider implementation
|
|
6
|
-
*/
|
|
7
|
-
export declare class GoogleProvider extends BaseAuthProvider {
|
|
8
|
-
constructor(config: AuthProviderConfig);
|
|
9
|
-
/**
|
|
10
|
-
* Extracts user information from Google JWT payload
|
|
11
|
-
*/
|
|
12
|
-
extractUserInfo(payload: JwtPayload): AuthUserInfo;
|
|
13
|
-
/**
|
|
14
|
-
* Validates Google-specific configuration
|
|
15
|
-
*/
|
|
16
|
-
validateConfig(): boolean;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=GoogleProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/GoogleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AACH,qBACa,cAAe,SAAQ,gBAAgB;gBACtC,MAAM,EAAE,kBAAkB;IAItC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAiBlD;;OAEG;IACH,cAAc,IAAI,OAAO;CAM1B"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { RegisterClass } from '@memberjunction/global';
|
|
11
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
12
|
-
/**
|
|
13
|
-
* Google Identity Platform authentication provider implementation
|
|
14
|
-
*/
|
|
15
|
-
let GoogleProvider = class GoogleProvider extends BaseAuthProvider {
|
|
16
|
-
constructor(config) {
|
|
17
|
-
super(config);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Extracts user information from Google JWT payload
|
|
21
|
-
*/
|
|
22
|
-
extractUserInfo(payload) {
|
|
23
|
-
// Google uses standard OIDC claims
|
|
24
|
-
const email = payload.email;
|
|
25
|
-
const fullName = payload.name;
|
|
26
|
-
const firstName = payload.given_name;
|
|
27
|
-
const lastName = payload.family_name;
|
|
28
|
-
const preferredUsername = email; // Google typically uses email as username
|
|
29
|
-
return {
|
|
30
|
-
email,
|
|
31
|
-
firstName: firstName || fullName?.split(' ')[0],
|
|
32
|
-
lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
|
|
33
|
-
fullName,
|
|
34
|
-
preferredUsername
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Validates Google-specific configuration
|
|
39
|
-
*/
|
|
40
|
-
validateConfig() {
|
|
41
|
-
const baseValid = super.validateConfig();
|
|
42
|
-
const hasClientId = !!this.config.clientId;
|
|
43
|
-
return baseValid && hasClientId;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
GoogleProvider = __decorate([
|
|
47
|
-
RegisterClass(BaseAuthProvider, 'google'),
|
|
48
|
-
__metadata("design:paramtypes", [Object])
|
|
49
|
-
], GoogleProvider);
|
|
50
|
-
export { GoogleProvider };
|
|
51
|
-
//# sourceMappingURL=GoogleProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/GoogleProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,gBAAgB;IAClD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,mCAAmC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,0CAA0C;QAE3E,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE3C,OAAO,SAAS,IAAI,WAAW,CAAC;IAClC,CAAC;CACF,CAAA;AAlCY,cAAc;IAD1B,aAAa,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;GAC7B,cAAc,CAkC1B"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { JwtPayload } from 'jsonwebtoken';
|
|
2
|
-
import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
|
|
3
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
4
|
-
/**
|
|
5
|
-
* Microsoft Authentication Library (MSAL) provider implementation
|
|
6
|
-
*/
|
|
7
|
-
export declare class MSALProvider extends BaseAuthProvider {
|
|
8
|
-
constructor(config: AuthProviderConfig);
|
|
9
|
-
/**
|
|
10
|
-
* Extracts user information from MSAL/Azure AD JWT payload
|
|
11
|
-
*/
|
|
12
|
-
extractUserInfo(payload: JwtPayload): AuthUserInfo;
|
|
13
|
-
/**
|
|
14
|
-
* Validates MSAL-specific configuration
|
|
15
|
-
*/
|
|
16
|
-
validateConfig(): boolean;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=MSALProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MSALProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/MSALProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,qBACa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,kBAAkB;IAItC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAiBlD;;OAEG;IACH,cAAc,IAAI,OAAO;CAO1B"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { RegisterClass } from '@memberjunction/global';
|
|
11
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
12
|
-
/**
|
|
13
|
-
* Microsoft Authentication Library (MSAL) provider implementation
|
|
14
|
-
*/
|
|
15
|
-
let MSALProvider = class MSALProvider extends BaseAuthProvider {
|
|
16
|
-
constructor(config) {
|
|
17
|
-
super(config);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Extracts user information from MSAL/Azure AD JWT payload
|
|
21
|
-
*/
|
|
22
|
-
extractUserInfo(payload) {
|
|
23
|
-
// MSAL/Azure AD uses some custom claims
|
|
24
|
-
const email = payload.email || payload.preferred_username;
|
|
25
|
-
const fullName = payload.name;
|
|
26
|
-
const firstName = payload.given_name;
|
|
27
|
-
const lastName = payload.family_name;
|
|
28
|
-
const preferredUsername = payload.preferred_username;
|
|
29
|
-
return {
|
|
30
|
-
email,
|
|
31
|
-
firstName: firstName || fullName?.split(' ')[0],
|
|
32
|
-
lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
|
|
33
|
-
fullName,
|
|
34
|
-
preferredUsername
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Validates MSAL-specific configuration
|
|
39
|
-
*/
|
|
40
|
-
validateConfig() {
|
|
41
|
-
const baseValid = super.validateConfig();
|
|
42
|
-
const hasClientId = !!this.config.clientId;
|
|
43
|
-
const hasTenantId = !!this.config.tenantId;
|
|
44
|
-
return baseValid && hasClientId && hasTenantId;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
MSALProvider = __decorate([
|
|
48
|
-
RegisterClass(BaseAuthProvider, 'msal'),
|
|
49
|
-
__metadata("design:paramtypes", [Object])
|
|
50
|
-
], MSALProvider);
|
|
51
|
-
export { MSALProvider };
|
|
52
|
-
//# sourceMappingURL=MSALProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MSALProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/MSALProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,gBAAgB;IAChD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,wCAAwC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,IAAI,OAAO,CAAC,kBAAwC,CAAC;QACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAwC,CAAC;QAE3E,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE3C,OAAO,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC;IACjD,CAAC;CACF,CAAA;AAnCY,YAAY;IADxB,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC;;GAC3B,YAAY,CAmCxB"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { JwtPayload } from 'jsonwebtoken';
|
|
2
|
-
import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
|
|
3
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
4
|
-
/**
|
|
5
|
-
* Okta authentication provider implementation
|
|
6
|
-
*/
|
|
7
|
-
export declare class OktaProvider extends BaseAuthProvider {
|
|
8
|
-
constructor(config: AuthProviderConfig);
|
|
9
|
-
/**
|
|
10
|
-
* Extracts user information from Okta JWT payload
|
|
11
|
-
*/
|
|
12
|
-
extractUserInfo(payload: JwtPayload): AuthUserInfo;
|
|
13
|
-
/**
|
|
14
|
-
* Validates Okta-specific configuration
|
|
15
|
-
*/
|
|
16
|
-
validateConfig(): boolean;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=OktaProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OktaProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/OktaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AACH,qBACa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,kBAAkB;IAItC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAiBlD;;OAEG;IACH,cAAc,IAAI,OAAO;CAO1B"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { RegisterClass } from '@memberjunction/global';
|
|
11
|
-
import { BaseAuthProvider } from '../BaseAuthProvider.js';
|
|
12
|
-
/**
|
|
13
|
-
* Okta authentication provider implementation
|
|
14
|
-
*/
|
|
15
|
-
let OktaProvider = class OktaProvider extends BaseAuthProvider {
|
|
16
|
-
constructor(config) {
|
|
17
|
-
super(config);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Extracts user information from Okta JWT payload
|
|
21
|
-
*/
|
|
22
|
-
extractUserInfo(payload) {
|
|
23
|
-
// Okta uses standard OIDC claims plus some custom ones
|
|
24
|
-
const email = payload.email || payload.preferred_username;
|
|
25
|
-
const fullName = payload.name;
|
|
26
|
-
const firstName = payload.given_name;
|
|
27
|
-
const lastName = payload.family_name;
|
|
28
|
-
const preferredUsername = payload.preferred_username || email;
|
|
29
|
-
return {
|
|
30
|
-
email,
|
|
31
|
-
firstName: firstName || fullName?.split(' ')[0],
|
|
32
|
-
lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
|
|
33
|
-
fullName,
|
|
34
|
-
preferredUsername
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Validates Okta-specific configuration
|
|
39
|
-
*/
|
|
40
|
-
validateConfig() {
|
|
41
|
-
const baseValid = super.validateConfig();
|
|
42
|
-
const hasClientId = !!this.config.clientId;
|
|
43
|
-
const hasDomain = !!this.config.domain;
|
|
44
|
-
return baseValid && hasClientId && hasDomain;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
OktaProvider = __decorate([
|
|
48
|
-
RegisterClass(BaseAuthProvider, 'okta'),
|
|
49
|
-
__metadata("design:paramtypes", [Object])
|
|
50
|
-
], OktaProvider);
|
|
51
|
-
export { OktaProvider };
|
|
52
|
-
//# sourceMappingURL=OktaProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OktaProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/OktaProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,gBAAgB;IAChD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,uDAAuD;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,IAAI,OAAO,CAAC,kBAAwC,CAAC;QACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAwC,IAAI,KAAK,CAAC;QAEpF,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,OAAO,SAAS,IAAI,WAAW,IAAI,SAAS,CAAC;IAC/C,CAAC;CACF,CAAA;AAnCY,YAAY;IADxB,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC;;GAC3B,YAAY,CAmCxB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenExpiredError.d.ts","sourceRoot":"","sources":["../../src/auth/tokenExpiredError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,UAAU,EAAE,IAAI,EAAE,OAAO,SAA+D;CAQrG"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { GraphQLError } from 'graphql';
|
|
2
|
-
export class TokenExpiredError extends GraphQLError {
|
|
3
|
-
constructor(expiryDate, message = 'The provided token has expired. Please authenticate again.') {
|
|
4
|
-
super(message, {
|
|
5
|
-
extensions: {
|
|
6
|
-
code: 'JWT_EXPIRED',
|
|
7
|
-
expiryDate: expiryDate.toISOString(),
|
|
8
|
-
},
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=tokenExpiredError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenExpiredError.js","sourceRoot":"","sources":["../../src/auth/tokenExpiredError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YAAY,UAAgB,EAAE,OAAO,GAAG,4DAA4D;QAClG,KAAK,CAAC,OAAO,EAAE;YACb,UAAU,EAAE;gBACV,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;aACrC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { AuthProviderConfig } from '@memberjunction/core';
|
|
2
|
-
import { IAuthProvider } from './IAuthProvider.js';
|
|
3
|
-
import { BaseAuthProvider } from './BaseAuthProvider.js';
|
|
4
|
-
import { MJGlobal } from '@memberjunction/global';
|
|
5
|
-
|
|
6
|
-
// Import providers to ensure they're registered
|
|
7
|
-
import './providers/Auth0Provider.js';
|
|
8
|
-
import './providers/MSALProvider.js';
|
|
9
|
-
import './providers/OktaProvider.js';
|
|
10
|
-
import './providers/CognitoProvider.js';
|
|
11
|
-
import './providers/GoogleProvider.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Factory and registry for managing authentication providers
|
|
15
|
-
* Combines provider creation and lifecycle management in a single class
|
|
16
|
-
*/
|
|
17
|
-
export class AuthProviderFactory {
|
|
18
|
-
private static instance: AuthProviderFactory;
|
|
19
|
-
private providers: Map<string, IAuthProvider> = new Map();
|
|
20
|
-
private issuerCache: Map<string, IAuthProvider> = new Map();
|
|
21
|
-
private issuerMultiCache: Map<string, IAuthProvider[]> = new Map();
|
|
22
|
-
|
|
23
|
-
private constructor() {}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Gets the singleton instance of the factory
|
|
27
|
-
*/
|
|
28
|
-
static getInstance(): AuthProviderFactory {
|
|
29
|
-
if (!AuthProviderFactory.instance) {
|
|
30
|
-
AuthProviderFactory.instance = new AuthProviderFactory();
|
|
31
|
-
}
|
|
32
|
-
return AuthProviderFactory.instance;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Creates an authentication provider instance based on configuration
|
|
37
|
-
* Uses MJGlobal ClassFactory to instantiate the correct provider class
|
|
38
|
-
*/
|
|
39
|
-
static createProvider(config: AuthProviderConfig): IAuthProvider {
|
|
40
|
-
try {
|
|
41
|
-
// Use MJGlobal ClassFactory to create the provider instance
|
|
42
|
-
// The provider type in config should match the key used in @RegisterClass
|
|
43
|
-
// The config is passed as a constructor parameter via the spread operator
|
|
44
|
-
const provider = MJGlobal.Instance.ClassFactory.CreateInstance<BaseAuthProvider>(
|
|
45
|
-
BaseAuthProvider,
|
|
46
|
-
config.type.toLowerCase(),
|
|
47
|
-
config
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
if (!provider) {
|
|
51
|
-
throw new Error(`No provider registered for type: ${config.type}`);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return provider;
|
|
55
|
-
} catch (error) {
|
|
56
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
57
|
-
throw new Error(`Failed to create authentication provider for type '${config.type}': ${message}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Registers a new authentication provider
|
|
63
|
-
*/
|
|
64
|
-
register(provider: IAuthProvider): void {
|
|
65
|
-
if (!provider.validateConfig()) {
|
|
66
|
-
throw new Error(`Invalid configuration for provider: ${provider.name}`);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
this.providers.set(provider.name, provider);
|
|
70
|
-
|
|
71
|
-
// Clear issuer caches when registering new provider
|
|
72
|
-
this.issuerCache.clear();
|
|
73
|
-
this.issuerMultiCache.clear();
|
|
74
|
-
|
|
75
|
-
console.log(`Registered auth provider: ${provider.name} with issuer: ${provider.issuer}`);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Gets a provider by its issuer URL
|
|
80
|
-
*/
|
|
81
|
-
getByIssuer(issuer: string): IAuthProvider | undefined {
|
|
82
|
-
// Check cache first
|
|
83
|
-
if (this.issuerCache.has(issuer)) {
|
|
84
|
-
return this.issuerCache.get(issuer);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Search through providers
|
|
88
|
-
for (const provider of this.providers.values()) {
|
|
89
|
-
if (provider.matchesIssuer(issuer)) {
|
|
90
|
-
// Cache for future lookups
|
|
91
|
-
this.issuerCache.set(issuer, provider);
|
|
92
|
-
return provider;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return undefined;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Gets all providers matching an issuer URL.
|
|
101
|
-
* Unlike getByIssuer() which returns only the first match, this returns
|
|
102
|
-
* all providers for a given issuer. This is needed when multiple apps
|
|
103
|
-
* (e.g. MJExplorer + MJCentral) share the same Auth0 domain but have
|
|
104
|
-
* different audiences (client IDs).
|
|
105
|
-
*/
|
|
106
|
-
getAllByIssuer(issuer: string): IAuthProvider[] {
|
|
107
|
-
// Check multi-provider cache first
|
|
108
|
-
if (this.issuerMultiCache.has(issuer)) {
|
|
109
|
-
return this.issuerMultiCache.get(issuer)!;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const matches: IAuthProvider[] = [];
|
|
113
|
-
for (const provider of this.providers.values()) {
|
|
114
|
-
if (provider.matchesIssuer(issuer)) {
|
|
115
|
-
matches.push(provider);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (matches.length > 0) {
|
|
120
|
-
this.issuerMultiCache.set(issuer, matches);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return matches;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Gets a provider by its name
|
|
128
|
-
*/
|
|
129
|
-
getByName(name: string): IAuthProvider | undefined {
|
|
130
|
-
return this.providers.get(name);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Gets all registered providers
|
|
135
|
-
*/
|
|
136
|
-
getAllProviders(): IAuthProvider[] {
|
|
137
|
-
return Array.from(this.providers.values());
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Checks if any providers are registered
|
|
142
|
-
*/
|
|
143
|
-
hasProviders(): boolean {
|
|
144
|
-
return this.providers.size > 0;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Clears all registered providers (useful for testing)
|
|
149
|
-
*/
|
|
150
|
-
clear(): void {
|
|
151
|
-
this.providers.clear();
|
|
152
|
-
this.issuerCache.clear();
|
|
153
|
-
this.issuerMultiCache.clear();
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Gets all registered provider types from the ClassFactory
|
|
158
|
-
*/
|
|
159
|
-
static getRegisteredProviderTypes(): string[] {
|
|
160
|
-
// Get all registrations for BaseAuthProvider from ClassFactory
|
|
161
|
-
const registrations = MJGlobal.Instance.ClassFactory.GetAllRegistrations(BaseAuthProvider);
|
|
162
|
-
// Extract unique keys (provider types) from registrations
|
|
163
|
-
const providerTypes = registrations
|
|
164
|
-
.map(reg => reg.Key)
|
|
165
|
-
.filter((key): key is string => key !== null && key !== undefined);
|
|
166
|
-
// Return unique provider types
|
|
167
|
-
return Array.from(new Set(providerTypes));
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Checks if a provider type is registered
|
|
172
|
-
*/
|
|
173
|
-
static isProviderTypeRegistered(type: string): boolean {
|
|
174
|
-
try {
|
|
175
|
-
// Try to get the registration for this specific type
|
|
176
|
-
const registration = MJGlobal.Instance.ClassFactory.GetRegistration(BaseAuthProvider, type.toLowerCase());
|
|
177
|
-
return registration !== null && registration !== undefined;
|
|
178
|
-
} catch {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|