@schemavaults/auth-server-sdk 0.17.2

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 (116) hide show
  1. package/README.md +3 -0
  2. package/dist/DatabaseResourceGroup/IDatabaseResourceGroup.d.ts +4 -0
  3. package/dist/DatabaseResourceGroup/IDatabaseResourceGroup.js +2 -0
  4. package/dist/DatabaseResourceGroup/IDatabaseResourceGroup.js.map +1 -0
  5. package/dist/DatabaseResourceGroup/index.d.ts +1 -0
  6. package/dist/DatabaseResourceGroup/index.js +2 -0
  7. package/dist/DatabaseResourceGroup/index.js.map +1 -0
  8. package/dist/JwtKeyManager/DatabaseConnectedJwtKeyManager.d.ts +12 -0
  9. package/dist/JwtKeyManager/DatabaseConnectedJwtKeyManager.js +17 -0
  10. package/dist/JwtKeyManager/DatabaseConnectedJwtKeyManager.js.map +1 -0
  11. package/dist/JwtKeyManager/IJwtKeyManager.d.ts +4 -0
  12. package/dist/JwtKeyManager/IJwtKeyManager.js +2 -0
  13. package/dist/JwtKeyManager/IJwtKeyManager.js.map +1 -0
  14. package/dist/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.d.ts +16 -0
  15. package/dist/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.js +14 -0
  16. package/dist/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.js.map +1 -0
  17. package/dist/JwtKeyManager/JsonWebKeySetsStore/IJsonWebKeySetsStore.d.ts +12 -0
  18. package/dist/JwtKeyManager/JsonWebKeySetsStore/IJsonWebKeySetsStore.js +2 -0
  19. package/dist/JwtKeyManager/JsonWebKeySetsStore/IJsonWebKeySetsStore.js.map +1 -0
  20. package/dist/JwtKeyManager/JsonWebKeySetsStore/MockJwtKeySetsStore.d.ts +15 -0
  21. package/dist/JwtKeyManager/JsonWebKeySetsStore/MockJwtKeySetsStore.js +88 -0
  22. package/dist/JwtKeyManager/JsonWebKeySetsStore/MockJwtKeySetsStore.js.map +1 -0
  23. package/dist/JwtKeyManager/JsonWebKeySetsStore/index.d.ts +2 -0
  24. package/dist/JwtKeyManager/JsonWebKeySetsStore/index.js +2 -0
  25. package/dist/JwtKeyManager/JsonWebKeySetsStore/index.js.map +1 -0
  26. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.d.ts +11 -0
  27. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.js +21 -0
  28. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.js.map +1 -0
  29. package/dist/JwtKeyManager/RemoteJwtKeyManager/index.d.ts +2 -0
  30. package/dist/JwtKeyManager/RemoteJwtKeyManager/index.js +3 -0
  31. package/dist/JwtKeyManager/RemoteJwtKeyManager/index.js.map +1 -0
  32. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.d.ts +7 -0
  33. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.js +22 -0
  34. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.js.map +1 -0
  35. package/dist/JwtKeyManager/index.d.ts +6 -0
  36. package/dist/JwtKeyManager/index.js +5 -0
  37. package/dist/JwtKeyManager/index.js.map +1 -0
  38. package/dist/JwtKeyManager/loadJwtDecodingKeys.d.ts +19 -0
  39. package/dist/JwtKeyManager/loadJwtDecodingKeys.js +52 -0
  40. package/dist/JwtKeyManager/loadJwtDecodingKeys.js.map +1 -0
  41. package/dist/index.d.ts +8 -0
  42. package/dist/index.js +5 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/middleware/index.d.ts +5 -0
  45. package/dist/middleware/index.js +3 -0
  46. package/dist/middleware/index.js.map +1 -0
  47. package/dist/middleware/middleware_chain/index.d.ts +2 -0
  48. package/dist/middleware/middleware_chain/index.js +2 -0
  49. package/dist/middleware/middleware_chain/index.js.map +1 -0
  50. package/dist/middleware/middleware_chain/middleware_chain.d.ts +13 -0
  51. package/dist/middleware/middleware_chain/middleware_chain.js +53 -0
  52. package/dist/middleware/middleware_chain/middleware_chain.js.map +1 -0
  53. package/dist/middleware/middleware_types.d.ts +21 -0
  54. package/dist/middleware/middleware_types.js +2 -0
  55. package/dist/middleware/middleware_types.js.map +1 -0
  56. package/dist/middleware/middlewares/BaseMiddleware.d.ts +24 -0
  57. package/dist/middleware/middlewares/BaseMiddleware.js +53 -0
  58. package/dist/middleware/middlewares/BaseMiddleware.js.map +1 -0
  59. package/dist/middleware/middlewares/default_middleware.d.ts +10 -0
  60. package/dist/middleware/middlewares/default_middleware.js +25 -0
  61. package/dist/middleware/middlewares/default_middleware.js.map +1 -0
  62. package/dist/middleware/middlewares/withAuthJwtValidation/index.d.ts +1 -0
  63. package/dist/middleware/middlewares/withAuthJwtValidation/index.js +2 -0
  64. package/dist/middleware/middlewares/withAuthJwtValidation/index.js.map +1 -0
  65. package/dist/middleware/middlewares/withAuthJwtValidation/withAuthJwtValidation.d.ts +32 -0
  66. package/dist/middleware/middlewares/withAuthJwtValidation/withAuthJwtValidation.js +245 -0
  67. package/dist/middleware/middlewares/withAuthJwtValidation/withAuthJwtValidation.js.map +1 -0
  68. package/dist/middleware/middlewares/withCorsSettings/applyCorsHeaders.d.ts +12 -0
  69. package/dist/middleware/middlewares/withCorsSettings/applyCorsHeaders.js +46 -0
  70. package/dist/middleware/middlewares/withCorsSettings/applyCorsHeaders.js.map +1 -0
  71. package/dist/middleware/middlewares/withCorsSettings/assertNoOriginSet.d.ts +1 -0
  72. package/dist/middleware/middlewares/withCorsSettings/assertNoOriginSet.js +7 -0
  73. package/dist/middleware/middlewares/withCorsSettings/assertNoOriginSet.js.map +1 -0
  74. package/dist/middleware/middlewares/withCorsSettings/cors-policies.d.ts +8 -0
  75. package/dist/middleware/middlewares/withCorsSettings/cors-policies.js +21 -0
  76. package/dist/middleware/middlewares/withCorsSettings/cors-policies.js.map +1 -0
  77. package/dist/middleware/middlewares/withCorsSettings/ensureHttpsInProd.d.ts +3 -0
  78. package/dist/middleware/middlewares/withCorsSettings/ensureHttpsInProd.js +22 -0
  79. package/dist/middleware/middlewares/withCorsSettings/ensureHttpsInProd.js.map +1 -0
  80. package/dist/middleware/middlewares/withCorsSettings/index.d.ts +4 -0
  81. package/dist/middleware/middlewares/withCorsSettings/index.js +3 -0
  82. package/dist/middleware/middlewares/withCorsSettings/index.js.map +1 -0
  83. package/dist/middleware/middlewares/withCorsSettings/isAllowedOrigin.d.ts +11 -0
  84. package/dist/middleware/middlewares/withCorsSettings/isAllowedOrigin.js +105 -0
  85. package/dist/middleware/middlewares/withCorsSettings/isAllowedOrigin.js.map +1 -0
  86. package/dist/middleware/middlewares/withCorsSettings/pretty-print-available-policies.d.ts +1 -0
  87. package/dist/middleware/middlewares/withCorsSettings/pretty-print-available-policies.js +32 -0
  88. package/dist/middleware/middlewares/withCorsSettings/pretty-print-available-policies.js.map +1 -0
  89. package/dist/middleware/middlewares/withCorsSettings/withCorsSettings.d.ts +25 -0
  90. package/dist/middleware/middlewares/withCorsSettings/withCorsSettings.js +231 -0
  91. package/dist/middleware/middlewares/withCorsSettings/withCorsSettings.js.map +1 -0
  92. package/dist/middleware/middlewares/withLogging.d.ts +6 -0
  93. package/dist/middleware/middlewares/withLogging.js +31 -0
  94. package/dist/middleware/middlewares/withLogging.js.map +1 -0
  95. package/dist/middleware/server-middleware.d.ts +23 -0
  96. package/dist/middleware/server-middleware.js +103 -0
  97. package/dist/middleware/server-middleware.js.map +1 -0
  98. package/dist/route_guards/admin.d.ts +5 -0
  99. package/dist/route_guards/admin.js +13 -0
  100. package/dist/route_guards/admin.js.map +1 -0
  101. package/dist/route_guards/authenticated.d.ts +5 -0
  102. package/dist/route_guards/authenticated.js +11 -0
  103. package/dist/route_guards/authenticated.js.map +1 -0
  104. package/dist/route_guards/base-route-guard.d.ts +15 -0
  105. package/dist/route_guards/base-route-guard.js +24 -0
  106. package/dist/route_guards/base-route-guard.js.map +1 -0
  107. package/dist/route_guards/index.d.ts +4 -0
  108. package/dist/route_guards/index.js +4 -0
  109. package/dist/route_guards/index.js.map +1 -0
  110. package/dist/route_guards/init_route_guard_check_options.d.ts +6 -0
  111. package/dist/route_guards/init_route_guard_check_options.js +2 -0
  112. package/dist/route_guards/init_route_guard_check_options.js.map +1 -0
  113. package/dist/route_guards/route-guard-factory.d.ts +25 -0
  114. package/dist/route_guards/route-guard-factory.js +155 -0
  115. package/dist/route_guards/route-guard-factory.js.map +1 -0
  116. package/package.json +45 -0
@@ -0,0 +1,105 @@
1
+ import { getHardcodedClientWebAppDomain, SCHEMAVAULTS_AUTH_APP_DEFINITION, SCHEMAVAULTS_MAIL_APP_DEFINITION, SCHEMAVAULTS_REGISTRY_SERVER, SCHEMAVAULTS_WEB, } from "@schemavaults/app-definitions";
2
+ import { SchemaVaultsCORSEnforcementPolicies as policies, } from "./cors-policies";
3
+ async function enforceValidAppIfOriginApplied(opts) {
4
+ const { origin, audience, environment, debug } = opts;
5
+ if (!origin) {
6
+ return true;
7
+ }
8
+ origin;
9
+ const auth_app_id = SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id;
10
+ const auth_server_uri = getHardcodedClientWebAppDomain(auth_app_id, environment);
11
+ if (origin === auth_server_uri && audience === auth_app_id) {
12
+ if (debug) {
13
+ console.log("[isAllowedOrigin] Ensuring that auth client application can reach auth server backend...");
14
+ }
15
+ return true;
16
+ }
17
+ const web_app_id = SCHEMAVAULTS_WEB.app_id;
18
+ const web_app_uri = getHardcodedClientWebAppDomain(web_app_id, environment);
19
+ // Allow https://schemavaults.com to reach https://auth.schemavaults.com
20
+ if (origin === web_app_uri && audience === auth_app_id) {
21
+ if (debug) {
22
+ console.log("[isAllowedOrigin] Ensuring that @schemavaults/web application can reach auth server backend...");
23
+ }
24
+ return true;
25
+ }
26
+ if (origin === web_app_uri && audience.startsWith("schemavaults-fs:")) {
27
+ if (debug) {
28
+ console.log("[isAllowedOrigin] Ensuring that @schemavaults/web application can reach vault fileserver backend...");
29
+ }
30
+ return true;
31
+ }
32
+ // Ensure that https://api.schemavaults.com can be accessed by the core web app
33
+ const registry_app_id = SCHEMAVAULTS_REGISTRY_SERVER.api_server_id;
34
+ if (origin === web_app_uri && audience === registry_app_id) {
35
+ if (debug) {
36
+ console.log("[isAllowedOrigin] Ensuring that @schemavaults/web application can reach registry API server backend...");
37
+ }
38
+ return true;
39
+ }
40
+ // Ensure that https://mail.schemavaults.com can be accessed by the core web app
41
+ const mail_app_id = SCHEMAVAULTS_MAIL_APP_DEFINITION.app_id;
42
+ if (origin === web_app_uri && audience === mail_app_id) {
43
+ if (debug) {
44
+ console.log("[isAllowedOrigin] Ensuring that @schemavaults/web application can reach mail API server backend...");
45
+ }
46
+ return true;
47
+ }
48
+ const mail_app_uri = getHardcodedClientWebAppDomain(mail_app_id, environment);
49
+ // Allow https://mail.schemavaults.com to reach https://auth.schemavaults.com
50
+ if (origin === mail_app_uri && audience === auth_app_id) {
51
+ if (debug) {
52
+ console.log("[isAllowedOrigin] Ensuring that @schemavaults/mail-server application can reach auth server backend...");
53
+ }
54
+ return true;
55
+ }
56
+ console.warn("[isAllowedOrigin] This is only half implemented-- need to check if origin is valid for non-hardcoded API servers!");
57
+ return false;
58
+ }
59
+ async function sameOriginIfOriginApplied(opts) {
60
+ const { origin, audience, environment, debug } = opts;
61
+ if (!origin) {
62
+ return true;
63
+ }
64
+ if (origin.startsWith("https://") && audience.startsWith("https://")) {
65
+ if (origin === audience) {
66
+ return true;
67
+ }
68
+ }
69
+ let hardcoded_app_uri;
70
+ try {
71
+ hardcoded_app_uri = getHardcodedClientWebAppDomain(audience, environment);
72
+ }
73
+ catch (e) {
74
+ void e; /** no-op, this app may not be a hardcoded app */
75
+ }
76
+ if (typeof hardcoded_app_uri === "string") {
77
+ if (origin === hardcoded_app_uri) {
78
+ return true;
79
+ }
80
+ else {
81
+ if (debug) {
82
+ console.warn(`[isAllowedOrigin] Denying due to mismatch between request origin and hardcoded app domain on record: ('${hardcoded_app_uri}')`);
83
+ }
84
+ return false;
85
+ }
86
+ }
87
+ throw new Error("Unimplemented, need to do more thorough check to see if this origin is the same as this server audience");
88
+ }
89
+ export async function isAllowedOrigin(opts) {
90
+ const { policy, environment, debug } = opts;
91
+ if (debug) {
92
+ console.log("[isAllowedOrigin] Running with options: ", opts, environment);
93
+ }
94
+ switch (policy) {
95
+ case policies.AllowAny:
96
+ return true;
97
+ case policies.EnforceValidAppIfOriginApplied:
98
+ return await enforceValidAppIfOriginApplied(opts);
99
+ case policies.SameOriginIfOriginApplied:
100
+ return await sameOriginIfOriginApplied(opts);
101
+ default:
102
+ throw new Error(`Unimplemented CORS policy: ${policy}`);
103
+ }
104
+ }
105
+ //# sourceMappingURL=isAllowedOrigin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAllowedOrigin.js","sourceRoot":"","sources":["../../../../src/middleware/middlewares/withCorsSettings/isAllowedOrigin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function prettyPrintAvailablePolicies(): string;
@@ -0,0 +1,32 @@
1
+ import { SchemaVaultsCORSEnforcementPolicies as policies, } from "./cors-policies";
2
+ function wrapWithQuotes(policyName) {
3
+ return `"${policyName}"`;
4
+ }
5
+ export function prettyPrintAvailablePolicies() {
6
+ const policy_names = Object.values(policies);
7
+ const n_policies = policy_names.length;
8
+ if (n_policies === 0) {
9
+ throw new Error("Failed to load available CORS policies!");
10
+ }
11
+ else if (n_policies === 1) {
12
+ return wrapWithQuotes(policy_names[0]);
13
+ }
14
+ console.assert(n_policies >= 2, "Expected there to be at least 2 CORS policies to print if this point was reached!");
15
+ const quotationWrapped = policy_names.map((policyName) => wrapWithQuotes(policyName));
16
+ const lastIndex = n_policies - 1;
17
+ let output = "";
18
+ quotationWrapped.forEach((policyName, index) => {
19
+ if (index === 0) {
20
+ output += policyName;
21
+ }
22
+ else {
23
+ output += ", ";
24
+ if (index === lastIndex) {
25
+ output += "or ";
26
+ }
27
+ output += policyName;
28
+ }
29
+ });
30
+ return output;
31
+ }
32
+ //# sourceMappingURL=pretty-print-available-policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pretty-print-available-policies.js","sourceRoot":"","sources":["../../../../src/middleware/middlewares/withCorsSettings/pretty-print-available-policies.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,IAAI,QAAQ,GAEhD,MAAM,iBAAiB,CAAC;AAEzB,SAAS,cAAc,CAAmB,UAAa;IACrD,OAAO,IAAI,UAAU,GAAG,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,MAAM,YAAY,GAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAW,YAAY,CAAC,MAAM,CAAC;IAC/C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,MAAM,CACZ,UAAU,IAAI,CAAC,EACf,mFAAmF,CACpF,CAAC;IAEF,MAAM,gBAAgB,GAAsB,YAAY,CAAC,GAAG,CAC1D,CAAC,UAA6C,EAAU,EAAE,CACxD,cAAc,CAAC,UAAU,CAAC,CAC7B,CAAC;IAEF,MAAM,SAAS,GAAW,UAAU,GAAG,CAAC,CAAC;IAEzC,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,gBAAgB,CAAC,OAAO,CAAC,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAE;QAC7D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,UAAU,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,IAAI,CAAC;YACf,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,UAAU,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAuB,CAAC;AACjC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { NextResponse } from "next/server";
2
+ import { type SchemaVaultsCORSEnforcementPolicy } from "./cors-policies";
3
+ import type { ISchemaVaultsMiddleware, ISchemaVaultsMiddlewareFactory, ISchemaVaultsMiddlewareFnInputs } from "../../middleware_types";
4
+ import { BaseMiddleware, type IBaseMiddlewareInitOptions } from "../BaseMiddleware";
5
+ export interface CorsSettings {
6
+ debug?: boolean;
7
+ policy: SchemaVaultsCORSEnforcementPolicy;
8
+ audience: string;
9
+ }
10
+ interface CorsMiddlewareSettings extends CorsSettings, Omit<IBaseMiddlewareInitOptions, "name"> {
11
+ next: ISchemaVaultsMiddleware;
12
+ }
13
+ declare class CorsMiddleware extends BaseMiddleware implements ISchemaVaultsMiddleware {
14
+ private readonly policy;
15
+ private readonly audience;
16
+ constructor(settings: CorsMiddlewareSettings);
17
+ handle({ req, json, ...inputs }: ISchemaVaultsMiddlewareFnInputs): Promise<NextResponse | Response>;
18
+ }
19
+ export declare class CorsMiddlewareFactory implements ISchemaVaultsMiddlewareFactory {
20
+ readonly type: "middleware-factory";
21
+ private readonly middlewareOpts;
22
+ constructor(opts: CorsSettings);
23
+ create(next: ISchemaVaultsMiddleware): CorsMiddleware;
24
+ }
25
+ export {};
@@ -0,0 +1,231 @@
1
+ import { applyCorsHeaders } from "./applyCorsHeaders";
2
+ import { isValidCORSEnforcementPolicy, SchemaVaultsCORSEnforcementPolicies as policies, } from "./cors-policies";
3
+ import { isAllowedOrigin } from "./isAllowedOrigin";
4
+ import { ensureHttpsInProduction } from "./ensureHttpsInProd";
5
+ import { BaseMiddleware, } from "../BaseMiddleware";
6
+ import { assertNoOriginSet } from "./assertNoOriginSet";
7
+ import { prettyPrintAvailablePolicies } from "./pretty-print-available-policies";
8
+ class CorsMiddleware extends BaseMiddleware {
9
+ policy;
10
+ audience;
11
+ constructor(settings) {
12
+ super({
13
+ ...settings,
14
+ next: settings.next,
15
+ name: "CORS Middleware",
16
+ });
17
+ if (!isValidCORSEnforcementPolicy(settings.policy)) {
18
+ throw new Error(`CorsMiddleware did not receive a valid CORS policy to enforce! Constructor's 'policy' option should be one of: ${prettyPrintAvailablePolicies()}`);
19
+ }
20
+ this.policy = settings.policy;
21
+ this.audience = settings.audience;
22
+ }
23
+ async handle({ req, json, ...inputs }) {
24
+ const DEBUG = this.debug;
25
+ const POLICY = this.policy;
26
+ const audience = this.audience;
27
+ if (DEBUG) {
28
+ console.log("[CorsMiddleware] Running on URL: ", req.url);
29
+ console.log("[CorsMiddleware] nextURL: ", req.nextUrl);
30
+ console.log("[CorsMiddleware] Request Method: ", req.method);
31
+ console.log("[CorsMiddleware] Headers: ", req.headers.entries());
32
+ }
33
+ const origin = req.headers.get("origin") ?? req.headers.get("Origin");
34
+ const isOriginSet = typeof origin === "string" && origin.length > 0;
35
+ const isPreflight = req.method === "OPTIONS";
36
+ const isAllowed = await isAllowedOrigin({
37
+ origin,
38
+ policy: POLICY,
39
+ audience,
40
+ debug: DEBUG,
41
+ environment: this.environment,
42
+ });
43
+ if (DEBUG) {
44
+ console.log(`[withCorsSettings] ${isOriginSet ? "An" : "No"} origin is set. ${isOriginSet ? `Origin "${origin}"` : "Not having an origin"} ${isAllowed ? "is" : "is not"} allowed for audience "${audience}"`);
45
+ }
46
+ if (!isAllowed) {
47
+ if (DEBUG) {
48
+ console.log("[CorsMiddleware] Origin not allowed, returning 403");
49
+ }
50
+ return json({
51
+ message: "Origin not allowed",
52
+ success: false,
53
+ }, { status: 403 });
54
+ } // isAllowed = true
55
+ if (isPreflight) {
56
+ if (DEBUG) {
57
+ console.log("[withCorsSettings] Handling preflight OPTIONS response...");
58
+ }
59
+ console.assert(!!isAllowed);
60
+ let preflightResponseHeaders;
61
+ try {
62
+ preflightResponseHeaders = applyCorsHeaders({
63
+ origin,
64
+ headers: {},
65
+ policy: POLICY,
66
+ preflight: isPreflight,
67
+ method: req.method,
68
+ allowed: isAllowed,
69
+ debug: DEBUG,
70
+ });
71
+ }
72
+ catch (e) {
73
+ console.error("Failed to apply CORS headers for preflight request: ", e);
74
+ return json({
75
+ success: false,
76
+ message: "Error applying preflight headers",
77
+ }, { status: 500 });
78
+ }
79
+ if (DEBUG) {
80
+ console.log("[withCorsSettings] Assembling preflight OPTIONS response...");
81
+ }
82
+ try {
83
+ const preflightOptionsResponse = json({
84
+ success: true,
85
+ message: "Preflight OK",
86
+ }, {
87
+ status: 200,
88
+ headers: new Headers(preflightResponseHeaders),
89
+ });
90
+ if (DEBUG) {
91
+ console.log("[withCorsSettings] Returning preflight OPTIONS response...");
92
+ }
93
+ return preflightOptionsResponse;
94
+ }
95
+ catch (e) {
96
+ console.error("[withCorsSettings] Failed to return preflight response: ", e);
97
+ return json({
98
+ success: false,
99
+ message: "Error building/returning preflight response",
100
+ }, { status: 500 });
101
+ }
102
+ }
103
+ else {
104
+ if (DEBUG) {
105
+ console.log("[withCorsSettings] This is not a preflight request! (the real deal!!!)");
106
+ }
107
+ }
108
+ console.assert(!isPreflight, "[withCorsSettings] Expected preflight requests to have been handled by this point!");
109
+ if (!origin) {
110
+ if (DEBUG) {
111
+ console.log("[withCorsSettings] No origin header set on request");
112
+ }
113
+ console.assert(assertNoOriginSet(origin), "Expected request to not contain an origin header if this point was reached!");
114
+ if (req.method !== "GET") {
115
+ if (DEBUG) {
116
+ console.log("[withCorsSettings] No origin header set on request for non-GET method request. Evaluating whether permitted using policy: ", POLICY);
117
+ }
118
+ switch (POLICY) {
119
+ case policies.AllowAny:
120
+ console.assert(assertNoOriginSet(origin), `Expected request to not contain an origin header if this point (non-GET '${policies.AllowAny}' policy evaluator) was reached!`);
121
+ break; // allow.
122
+ case policies.EnforceValidAppIfOriginApplied:
123
+ console.assert(assertNoOriginSet(origin), `Expected request to not contain an origin header if this point (non-GET '${policies.EnforceValidAppIfOriginApplied}' policy evaluator) was reached!`);
124
+ break; // allow if this policy set -- no origin set
125
+ case policies.SameOriginIfOriginApplied:
126
+ console.assert(assertNoOriginSet(origin), `Expected request to not contain an origin header if this point (non-GET '${policies.SameOriginIfOriginApplied}' policy evaluator) was reached!`);
127
+ break;
128
+ default:
129
+ throw new Error(`Unhandled CORS policy for handling non-GET method request w/o origin header: ${POLICY}`);
130
+ } // end switch(POLICY) statement for handling non-GET requests
131
+ if (DEBUG) {
132
+ console.log(`[withCorsSettings] No origin header found for a non-GET request, but policy '${POLICY}' has allowed this!`);
133
+ }
134
+ }
135
+ else {
136
+ if (DEBUG) {
137
+ console.log("[withCorsSettings] No origin header found, but that's ok for a GET request");
138
+ }
139
+ }
140
+ }
141
+ if (origin) {
142
+ const potentialErrorResponse = ensureHttpsInProduction(req, origin, json);
143
+ if (typeof potentialErrorResponse !== "undefined")
144
+ return potentialErrorResponse;
145
+ }
146
+ if (DEBUG) {
147
+ if (origin) {
148
+ console.log("[withCorsSettings] Request Origin: ", origin);
149
+ }
150
+ else {
151
+ console.log("[withCorsSettings] No request origin set");
152
+ }
153
+ }
154
+ const next = this.next;
155
+ if (!CorsMiddleware.hasNextMiddleware(next)) {
156
+ throw new Error("Expected CorsMiddleware to have child middleware(s)!");
157
+ }
158
+ const responseWithoutCorsHeaders = await next.handle({
159
+ req,
160
+ json,
161
+ ...inputs,
162
+ });
163
+ // Add CORS headers
164
+ if (responseWithoutCorsHeaders) {
165
+ if (DEBUG) {
166
+ console.log("[withCorsSettings] Applying CORS headers to response.");
167
+ }
168
+ let withCorsHeaders;
169
+ try {
170
+ const existingHeaders = responseWithoutCorsHeaders.headers;
171
+ const headers = {};
172
+ for (const [key, val] of existingHeaders.entries()) {
173
+ headers[key] = val;
174
+ }
175
+ withCorsHeaders = applyCorsHeaders({
176
+ origin,
177
+ headers,
178
+ policy: POLICY,
179
+ method: req.method,
180
+ preflight: false,
181
+ allowed: isAllowed,
182
+ debug: DEBUG,
183
+ });
184
+ }
185
+ catch (e) {
186
+ console.error("[withCorsSettings] Failed to apply CORS headers on final response: ", e);
187
+ throw new Error("Failed to apply CORS headers on final response!");
188
+ }
189
+ if (DEBUG) {
190
+ console.log("[withCorsSettings] Applied CORS headers to final response: ", withCorsHeaders);
191
+ }
192
+ try {
193
+ return new Response(responseWithoutCorsHeaders.body, {
194
+ headers: new Headers(withCorsHeaders),
195
+ status: responseWithoutCorsHeaders.status,
196
+ statusText: responseWithoutCorsHeaders.statusText,
197
+ });
198
+ }
199
+ catch (e) {
200
+ console.error("[withCorsSettings] Failed to generate final 'Response' instance with modified CORS headers: ", e);
201
+ return json({
202
+ success: false,
203
+ message: "Error applying preflight headers",
204
+ }, { status: 500 });
205
+ }
206
+ }
207
+ else {
208
+ if (DEBUG) {
209
+ console.log("[withCorsSettings] Not applying CORS headers to response, middleware result was falsy.");
210
+ }
211
+ }
212
+ if (DEBUG) {
213
+ console.log("[CorsMiddleware] Response: ", responseWithoutCorsHeaders);
214
+ }
215
+ return responseWithoutCorsHeaders;
216
+ }
217
+ }
218
+ export class CorsMiddlewareFactory {
219
+ type = "middleware-factory";
220
+ middlewareOpts;
221
+ constructor(opts) {
222
+ this.middlewareOpts = opts;
223
+ }
224
+ create(next) {
225
+ return new CorsMiddleware({
226
+ ...this.middlewareOpts,
227
+ next,
228
+ });
229
+ }
230
+ }
231
+ //# sourceMappingURL=withCorsSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withCorsSettings.js","sourceRoot":"","sources":["../../../../src/middleware/middlewares/withCorsSettings/withCorsSettings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ISchemaVaultsMiddleware, ISchemaVaultsMiddlewareFactory } from "../middleware_types";
2
+ export declare class RequestLoggingMiddlewareFactory implements ISchemaVaultsMiddlewareFactory {
3
+ readonly type: "middleware-factory";
4
+ create(next: ISchemaVaultsMiddleware): ISchemaVaultsMiddleware;
5
+ }
6
+ export default RequestLoggingMiddlewareFactory;
@@ -0,0 +1,31 @@
1
+ import { BaseMiddleware } from "./BaseMiddleware";
2
+ class RequestLoggingMiddleware extends BaseMiddleware {
3
+ constructor(next) {
4
+ super({
5
+ next,
6
+ name: "Request Logging Middleware",
7
+ });
8
+ }
9
+ async handle({ req, ...inputs }) {
10
+ // the request may have come from behind a reverse proxy like nginx
11
+ let ip = undefined;
12
+ if (req.headers.has("X-Real-IP")) {
13
+ ip = req.headers.get("X-Real-IP") ?? undefined;
14
+ }
15
+ const logIpPortion = ip ? `IP: "${ip}"` : "unknown IP";
16
+ console.log(`'${req.method}' => '${req.url}' (${logIpPortion}).`);
17
+ const next = this.next;
18
+ if (!RequestLoggingMiddleware.hasNextMiddleware(next)) {
19
+ throw new Error("Expected RequestLoggingMiddleware to have child middleware(s)!");
20
+ }
21
+ return await next.handle({ req, ...inputs });
22
+ }
23
+ }
24
+ export class RequestLoggingMiddlewareFactory {
25
+ type = "middleware-factory";
26
+ create(next) {
27
+ return new RequestLoggingMiddleware(next);
28
+ }
29
+ }
30
+ export default RequestLoggingMiddlewareFactory;
31
+ //# sourceMappingURL=withLogging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withLogging.js","sourceRoot":"","sources":["../../../src/middleware/middlewares/withLogging.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,wBACJ,SAAQ,cAAc;IAGtB,YAAmB,IAA6B;QAC9C,KAAK,CAAC;YACJ,IAAI;YACJ,IAAI,EAAE,4BAA4B;SACnC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,EAClB,GAAG,EACH,GAAG,MAAM,EACuB;QAChC,mEAAmE;QACnE,IAAI,EAAE,GAAuB,SAAS,CAAC;QACvC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QACjD,CAAC;QAED,MAAM,YAAY,GAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,YAAY,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,+BAA+B;IAG1B,IAAI,GAAG,oBAA6B,CAAC;IAE9C,MAAM,CAAC,IAA6B;QACzC,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,eAAe,+BAA+B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { AuthMiddlewareRules } from "@schemavaults/auth-common";
2
+ import type { NextResponse } from "next/server";
3
+ import { type SchemaVaultsAppEnvironment } from "@schemavaults/app-definitions";
4
+ import { type SchemaVaultsCORSEnforcementPolicy } from "./middlewares/withCorsSettings";
5
+ import type { ISchemaVaultsMiddleware, ISchemaVaultsMiddlewareFnInputs } from "./middleware_types";
6
+ import BaseMiddleware from "./middlewares/BaseMiddleware";
7
+ import { IJwtKeyManager } from "../JwtKeyManager";
8
+ export interface IServerMiddlewareInitializationOptions {
9
+ api_server_id?: string;
10
+ auth_middleware_rules?: AuthMiddlewareRules;
11
+ debug?: boolean;
12
+ cors_policy?: SchemaVaultsCORSEnforcementPolicy;
13
+ environment?: SchemaVaultsAppEnvironment;
14
+ jwt_keys_manager?: IJwtKeyManager;
15
+ }
16
+ export declare class SchemaVaultsServerMiddleware extends BaseMiddleware implements ISchemaVaultsMiddleware {
17
+ readonly options: IServerMiddlewareInitializationOptions;
18
+ private static isValidApiServerId;
19
+ private static getDefaultCorsPolicy;
20
+ private static setupMiddlewareChain;
21
+ constructor(options: IServerMiddlewareInitializationOptions);
22
+ handle({ req, ...inputs }: ISchemaVaultsMiddlewareFnInputs): Promise<NextResponse | Response>;
23
+ }
@@ -0,0 +1,103 @@
1
+ // server-middleware.ts
2
+ import { MiddlewareChain, } from "./middleware_chain";
3
+ import { apiServerIdSchema, getAppEnvironment, getHardcodedClientWebAppDomain, SCHEMAVAULTS_AUTH_APP_DEFINITION, } from "@schemavaults/app-definitions";
4
+ /** Middlewares Imports */
5
+ import AuthJwtValidationMiddlewareFactory from "./middlewares/withAuthJwtValidation";
6
+ import CorsMiddlewareFactory, { SchemaVaultsCORSEnforcementPolicies as cors_policies, } from "./middlewares/withCorsSettings";
7
+ import RequestLoggingMiddlewareFactory from "./middlewares/withLogging";
8
+ import BaseMiddleware from "./middlewares/BaseMiddleware";
9
+ import RemoteJwtKeyManager from "../JwtKeyManager/RemoteJwtKeyManager";
10
+ export class SchemaVaultsServerMiddleware extends BaseMiddleware {
11
+ options;
12
+ static isValidApiServerId(api_server_id) {
13
+ if (!api_server_id) {
14
+ console.error("[SchemaVaultsServerMiddleware] Did not receive a 'api_server_id' (falsy!) to initialize middleware with!");
15
+ throw new TypeError("Did not receive a valid API server ID!");
16
+ }
17
+ const parsed_api_server_id = apiServerIdSchema.safeParse(api_server_id);
18
+ if (!parsed_api_server_id.success) {
19
+ console.error("Error parsing API server ID to initialize SchemaVaultsServerMiddleware with: ", parsed_api_server_id.error);
20
+ throw new TypeError("Error parsing API server ID to initialize SchemaVaultsServerMiddleware with!");
21
+ }
22
+ return parsed_api_server_id.success;
23
+ }
24
+ static getDefaultCorsPolicy(environment) {
25
+ if (environment === "development") {
26
+ return cors_policies.AllowAny;
27
+ }
28
+ return cors_policies.EnforceValidAppIfOriginApplied;
29
+ }
30
+ static setupMiddlewareChain(opts) {
31
+ if (!SchemaVaultsServerMiddleware.isValidApiServerId(opts.api_server_id)) {
32
+ throw new TypeError("Invalid 'api_server_id' for server middleware!");
33
+ }
34
+ const audience = opts.api_server_id;
35
+ const environment = opts.environment ?? getAppEnvironment();
36
+ const isAuthServer = audience === SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id;
37
+ let jwt_keys_manager;
38
+ if (isAuthServer) {
39
+ if (!opts.jwt_keys_manager) {
40
+ throw new Error("Missing 'jwt_keys_manager' option for auth server middleware!");
41
+ }
42
+ jwt_keys_manager = opts.jwt_keys_manager;
43
+ }
44
+ else {
45
+ if (audience === SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id) {
46
+ throw new Error("Expected this to not be the auth server if this point was reached!");
47
+ }
48
+ if (opts.jwt_keys_manager) {
49
+ jwt_keys_manager = opts.jwt_keys_manager;
50
+ }
51
+ else {
52
+ jwt_keys_manager = new RemoteJwtKeyManager({
53
+ auth_server_uri: getHardcodedClientWebAppDomain(SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id, environment)
54
+ });
55
+ }
56
+ }
57
+ const debug = typeof opts.debug === "boolean"
58
+ ? opts.debug
59
+ : environment === "development" ||
60
+ environment === "test" ||
61
+ environment === "staging";
62
+ const cors_policy = opts.cors_policy ??
63
+ SchemaVaultsServerMiddleware.getDefaultCorsPolicy(environment);
64
+ const middlewareChainOpts = {
65
+ middlewares: [
66
+ new RequestLoggingMiddlewareFactory(),
67
+ new CorsMiddlewareFactory({
68
+ debug: debug,
69
+ audience,
70
+ policy: cors_policy,
71
+ }),
72
+ new AuthJwtValidationMiddlewareFactory({
73
+ audience,
74
+ middleware_rules: opts.auth_middleware_rules,
75
+ debug: debug,
76
+ environment: environment,
77
+ keys_manager: jwt_keys_manager
78
+ }),
79
+ ],
80
+ debug,
81
+ };
82
+ return new MiddlewareChain(middlewareChainOpts);
83
+ }
84
+ constructor(options) {
85
+ super({
86
+ ...options,
87
+ name: "SchemaVaultsServerMiddleware",
88
+ next: SchemaVaultsServerMiddleware.setupMiddlewareChain(options),
89
+ });
90
+ this.options = options;
91
+ if (this.debug) {
92
+ console.log(`[SchemaVaultsServerMiddleware] Initialized! (audience: ${options.api_server_id}). Middleware Chain: `, this.toMiddlewareFlowString());
93
+ }
94
+ }
95
+ async handle({ req, ...inputs }) {
96
+ const next = this.next;
97
+ if (!next) {
98
+ throw new Error("Failed to load SchemaVaults middleware handler!");
99
+ }
100
+ return await next.handle({ req, ...inputs });
101
+ }
102
+ }
103
+ //# sourceMappingURL=server-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-middleware.js","sourceRoot":"","sources":["../../src/middleware/server-middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { BaseRouteGuard, type IRouteGuard } from "./base-route-guard";
2
+ export declare class AdminRequiredRouteGuard extends BaseRouteGuard implements IRouteGuard {
3
+ isAccessAllowed(): boolean;
4
+ }
5
+ export default AdminRequiredRouteGuard;
@@ -0,0 +1,13 @@
1
+ import { BaseRouteGuard } from "./base-route-guard";
2
+ export class AdminRequiredRouteGuard extends BaseRouteGuard {
3
+ isAccessAllowed() {
4
+ if (this._user &&
5
+ this.isAuthenticated &&
6
+ this.isAdmin) {
7
+ return true;
8
+ }
9
+ return false;
10
+ }
11
+ }
12
+ export default AdminRequiredRouteGuard;
13
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/route_guards/admin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAoB,MAAM,oBAAoB,CAAC;AAEtE,MAAM,OAAO,uBACX,SAAQ,cAAc;IAGf,eAAe;QACpB,IACG,IAAI,CAAC,KAAgC;YACtC,IAAI,CAAC,eAAe;YACpB,IAAI,CAAC,OAAO,EACZ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { BaseRouteGuard, type IRouteGuard } from "./base-route-guard";
2
+ export declare class AuthenticationRequiredRouteGuard extends BaseRouteGuard implements IRouteGuard {
3
+ isAccessAllowed(): boolean;
4
+ }
5
+ export default AuthenticationRequiredRouteGuard;
@@ -0,0 +1,11 @@
1
+ import { BaseRouteGuard } from "./base-route-guard";
2
+ export class AuthenticationRequiredRouteGuard extends BaseRouteGuard {
3
+ isAccessAllowed() {
4
+ if (this.isAuthenticated) {
5
+ return true;
6
+ }
7
+ return false;
8
+ }
9
+ }
10
+ export default AuthenticationRequiredRouteGuard;
11
+ //# sourceMappingURL=authenticated.js.map