@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.
Files changed (80) hide show
  1. package/dist/auth/index.d.ts +0 -3
  2. package/dist/auth/index.d.ts.map +1 -1
  3. package/dist/auth/index.js +5 -7
  4. package/dist/auth/index.js.map +1 -1
  5. package/dist/auth/initializeProviders.js +2 -2
  6. package/dist/auth/initializeProviders.js.map +1 -1
  7. package/dist/config.d.ts +37 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +8 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/context.d.ts.map +1 -1
  12. package/dist/context.js +3 -3
  13. package/dist/context.js.map +1 -1
  14. package/dist/generated/generated.d.ts +169 -0
  15. package/dist/generated/generated.d.ts.map +1 -1
  16. package/dist/generated/generated.js +909 -1
  17. package/dist/generated/generated.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +16 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/resolvers/DatasetResolver.d.ts +5 -0
  23. package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
  24. package/dist/resolvers/DatasetResolver.js +35 -0
  25. package/dist/resolvers/DatasetResolver.js.map +1 -1
  26. package/package.json +60 -59
  27. package/src/__tests__/unifiedAuth.test.ts +3 -2
  28. package/src/auth/__tests__/backward-compatibility.test.ts +2 -3
  29. package/src/auth/index.ts +5 -8
  30. package/src/auth/initializeProviders.ts +2 -2
  31. package/src/config.ts +8 -0
  32. package/src/context.ts +3 -3
  33. package/src/generated/generated.ts +635 -2
  34. package/src/index.ts +21 -3
  35. package/src/resolvers/DatasetResolver.ts +36 -0
  36. package/dist/auth/AuthProviderFactory.d.ts +0 -68
  37. package/dist/auth/AuthProviderFactory.d.ts.map +0 -1
  38. package/dist/auth/AuthProviderFactory.js +0 -155
  39. package/dist/auth/AuthProviderFactory.js.map +0 -1
  40. package/dist/auth/BaseAuthProvider.d.ts +0 -41
  41. package/dist/auth/BaseAuthProvider.d.ts.map +0 -1
  42. package/dist/auth/BaseAuthProvider.js +0 -102
  43. package/dist/auth/BaseAuthProvider.js.map +0 -1
  44. package/dist/auth/IAuthProvider.d.ts +0 -46
  45. package/dist/auth/IAuthProvider.d.ts.map +0 -1
  46. package/dist/auth/IAuthProvider.js +0 -2
  47. package/dist/auth/IAuthProvider.js.map +0 -1
  48. package/dist/auth/providers/Auth0Provider.d.ts +0 -18
  49. package/dist/auth/providers/Auth0Provider.d.ts.map +0 -1
  50. package/dist/auth/providers/Auth0Provider.js +0 -52
  51. package/dist/auth/providers/Auth0Provider.js.map +0 -1
  52. package/dist/auth/providers/CognitoProvider.d.ts +0 -18
  53. package/dist/auth/providers/CognitoProvider.d.ts.map +0 -1
  54. package/dist/auth/providers/CognitoProvider.js +0 -56
  55. package/dist/auth/providers/CognitoProvider.js.map +0 -1
  56. package/dist/auth/providers/GoogleProvider.d.ts +0 -18
  57. package/dist/auth/providers/GoogleProvider.d.ts.map +0 -1
  58. package/dist/auth/providers/GoogleProvider.js +0 -51
  59. package/dist/auth/providers/GoogleProvider.js.map +0 -1
  60. package/dist/auth/providers/MSALProvider.d.ts +0 -18
  61. package/dist/auth/providers/MSALProvider.d.ts.map +0 -1
  62. package/dist/auth/providers/MSALProvider.js +0 -52
  63. package/dist/auth/providers/MSALProvider.js.map +0 -1
  64. package/dist/auth/providers/OktaProvider.d.ts +0 -18
  65. package/dist/auth/providers/OktaProvider.d.ts.map +0 -1
  66. package/dist/auth/providers/OktaProvider.js +0 -52
  67. package/dist/auth/providers/OktaProvider.js.map +0 -1
  68. package/dist/auth/tokenExpiredError.d.ts +0 -5
  69. package/dist/auth/tokenExpiredError.d.ts.map +0 -1
  70. package/dist/auth/tokenExpiredError.js +0 -12
  71. package/dist/auth/tokenExpiredError.js.map +0 -1
  72. package/src/auth/AuthProviderFactory.ts +0 -182
  73. package/src/auth/BaseAuthProvider.ts +0 -137
  74. package/src/auth/IAuthProvider.ts +0 -54
  75. package/src/auth/providers/Auth0Provider.ts +0 -45
  76. package/src/auth/providers/CognitoProvider.ts +0 -50
  77. package/src/auth/providers/GoogleProvider.ts +0 -45
  78. package/src/auth/providers/MSALProvider.ts +0 -45
  79. package/src/auth/providers/OktaProvider.ts +0 -46
  80. 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,5 +0,0 @@
1
- import { GraphQLError } from 'graphql';
2
- export declare class TokenExpiredError extends GraphQLError {
3
- constructor(expiryDate: Date, message?: string);
4
- }
5
- //# sourceMappingURL=tokenExpiredError.d.ts.map
@@ -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
- }