@tern-secure/nextjs 5.2.0-canary.v20251023005301 → 5.2.0-canary.v20251028151628

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 (68) hide show
  1. package/dist/cjs/app-router/admin/actions.js +7 -2
  2. package/dist/cjs/app-router/admin/actions.js.map +1 -1
  3. package/dist/cjs/app-router/admin/request.js +2 -2
  4. package/dist/cjs/app-router/admin/request.js.map +1 -1
  5. package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
  6. package/dist/cjs/boundary/components.js +6 -0
  7. package/dist/cjs/boundary/components.js.map +1 -1
  8. package/dist/cjs/boundary/hooks/useSafeLayoutEffect.js +40 -0
  9. package/dist/cjs/boundary/hooks/useSafeLayoutEffect.js.map +1 -0
  10. package/dist/cjs/index.js +6 -0
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/server/ternSecureEdgeMiddleware.js.map +1 -1
  13. package/dist/cjs/types.js.map +1 -1
  14. package/dist/esm/app-router/admin/actions.js +7 -2
  15. package/dist/esm/app-router/admin/actions.js.map +1 -1
  16. package/dist/esm/app-router/admin/request.js +2 -2
  17. package/dist/esm/app-router/admin/request.js.map +1 -1
  18. package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
  19. package/dist/esm/boundary/components.js +6 -0
  20. package/dist/esm/boundary/components.js.map +1 -1
  21. package/dist/esm/boundary/hooks/useSafeLayoutEffect.js +6 -0
  22. package/dist/esm/boundary/hooks/useSafeLayoutEffect.js.map +1 -0
  23. package/dist/esm/index.js +7 -1
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/server/ternSecureEdgeMiddleware.js.map +1 -1
  26. package/dist/esm/types.js.map +1 -1
  27. package/dist/types/app-router/admin/actions.d.ts +1 -0
  28. package/dist/types/app-router/admin/actions.d.ts.map +1 -1
  29. package/dist/types/app-router/client/TernSecureProvider.d.ts.map +1 -1
  30. package/dist/types/boundary/components.d.ts +1 -1
  31. package/dist/types/boundary/components.d.ts.map +1 -1
  32. package/dist/types/boundary/hooks/useSafeLayoutEffect.d.ts +3 -0
  33. package/dist/types/boundary/hooks/useSafeLayoutEffect.d.ts.map +1 -0
  34. package/dist/types/index.d.ts +2 -2
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/types/types.d.ts +10 -1
  37. package/dist/types/types.d.ts.map +1 -1
  38. package/package.json +5 -5
  39. package/dist/cjs/server/node/SessionTernSecure.js +0 -55
  40. package/dist/cjs/server/node/SessionTernSecure.js.map +0 -1
  41. package/dist/cjs/server/node/auth.js +0 -90
  42. package/dist/cjs/server/node/auth.js.map +0 -1
  43. package/dist/cjs/server/node/index.js +0 -40
  44. package/dist/cjs/server/node/index.js.map +0 -1
  45. package/dist/cjs/server/node/node-session.js +0 -60
  46. package/dist/cjs/server/node/node-session.js.map +0 -1
  47. package/dist/cjs/server/node/ternSecureNodeMiddleware.js +0 -181
  48. package/dist/cjs/server/node/ternSecureNodeMiddleware.js.map +0 -1
  49. package/dist/esm/server/node/SessionTernSecure.js +0 -31
  50. package/dist/esm/server/node/SessionTernSecure.js.map +0 -1
  51. package/dist/esm/server/node/auth.js +0 -63
  52. package/dist/esm/server/node/auth.js.map +0 -1
  53. package/dist/esm/server/node/index.js +0 -19
  54. package/dist/esm/server/node/index.js.map +0 -1
  55. package/dist/esm/server/node/node-session.js +0 -36
  56. package/dist/esm/server/node/node-session.js.map +0 -1
  57. package/dist/esm/server/node/ternSecureNodeMiddleware.js +0 -164
  58. package/dist/esm/server/node/ternSecureNodeMiddleware.js.map +0 -1
  59. package/dist/types/server/node/SessionTernSecure.d.ts +0 -3
  60. package/dist/types/server/node/SessionTernSecure.d.ts.map +0 -1
  61. package/dist/types/server/node/auth.d.ts +0 -23
  62. package/dist/types/server/node/auth.d.ts.map +0 -1
  63. package/dist/types/server/node/index.d.ts +0 -3
  64. package/dist/types/server/node/index.d.ts.map +0 -1
  65. package/dist/types/server/node/node-session.d.ts +0 -4
  66. package/dist/types/server/node/node-session.d.ts.map +0 -1
  67. package/dist/types/server/node/ternSecureNodeMiddleware.d.ts +0 -54
  68. package/dist/types/server/node/ternSecureNodeMiddleware.d.ts.map +0 -1
@@ -1,3 +1,3 @@
1
- export { useIdToken, useSession, useSignIn, useSignInContext, useTernSecure, SignInProvider, signIn, } from '@tern-secure/react';
1
+ export { useIdToken, useSession, useSignIn, useSignUp, useSignInContext, useSignUpContext, useTernSecure, SignInProvider, SignUpProvider, signIn, } from '@tern-secure/react';
2
2
  export { usePromiseAuth as useAuth } from './PromiseAuthProvider';
3
3
  //# sourceMappingURL=components.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/boundary/components.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,MAAM,GACT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/boundary/components.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,cAAc,EACd,MAAM,GACT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const useSafeLayoutEffect: typeof React.useEffect;
3
+ //# sourceMappingURL=useSafeLayoutEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSafeLayoutEffect.d.ts","sourceRoot":"","sources":["../../../../src/boundary/hooks/useSafeLayoutEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,mBAAmB,wBAA0E,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { TernSecureProvider } from './app-router/server/TernSecureProvider';
2
- export { useAuth, useIdToken, useSession, useSignIn, signIn, useSignInContext, useTernSecure, SignInProvider, } from './boundary/components';
3
- export type { TernSecureUser, TernSecureUserData, SignInResponse, SocialProviderOptions, } from '@tern-secure/types';
2
+ export { useAuth, useIdToken, useSession, useSignIn, useSignUp, signIn, useSignInContext, useSignUpContext, useTernSecure, SignInProvider, SignUpProvider, } from './boundary/components';
3
+ export type { TernSecureUser, TernSecureUserData, SignInResponse, SignUpResponse, SocialProviderOptions, } from '@tern-secure/types';
4
4
  export type { UserInfo, SessionResult } from './types';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,cAAc,GAKf,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,cAAc,GAKf,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
@@ -81,7 +81,7 @@ export interface TernSecureState {
81
81
  isAuthenticated: boolean;
82
82
  token: any | null;
83
83
  email: string | null;
84
- status: "loading" | "authenticated" | "unauthenticated" | "unverified";
84
+ status: 'loading' | 'authenticated' | 'unauthenticated' | 'unverified';
85
85
  requiresVerification: boolean;
86
86
  }
87
87
  export interface RedirectConfig {
@@ -108,6 +108,15 @@ export type TernSecureNextProps = TernSecureProviderProps & {
108
108
  apiKey?: string;
109
109
  requiresVerification?: boolean;
110
110
  loadingComponent?: React.ReactNode;
111
+ /**
112
+ * If set to true, the NextJS middleware will be invoked
113
+ * every time the client-side auth state changes (sign-out, sign-in, etc.).
114
+ * That way, any auth-dependent logic can be placed inside the middleware.
115
+ * Example: Configuring the middleware to force a redirect to `/sign-in` when the user signs out
116
+ *
117
+ * @default true
118
+ */
119
+ __unstable_invokeMiddlewareOnAuthStateChange?: boolean;
111
120
  };
112
121
  export interface User {
113
122
  uid: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "5.2.0-canary.v20251023005301",
3
+ "version": "5.2.0-canary.v20251028151628",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -63,10 +63,10 @@
63
63
  "jose": "^5.9.6",
64
64
  "server-only": "^0.0.1",
65
65
  "tslib": "2.4.1",
66
- "@tern-secure/backend": "1.2.0-canary.v20251023005301",
67
- "@tern-secure/react": "1.2.0-canary.v20251023005301",
68
- "@tern-secure/shared": "1.3.0-canary.v20251023005301",
69
- "@tern-secure/types": "1.1.0-canary.v20251023005301"
66
+ "@tern-secure/backend": "1.2.0-canary.v20251028151628",
67
+ "@tern-secure/react": "1.2.0-canary.v20251028151628",
68
+ "@tern-secure/shared": "1.3.0-canary.v20251028151628",
69
+ "@tern-secure/types": "1.1.0-canary.v20251028151628"
70
70
  },
71
71
  "peerDependencies": {
72
72
  "next": "^13.0.0 || ^14.0.0 || ^15.0.0",
@@ -1,55 +0,0 @@
1
- "use strict";
2
- "use server";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var SessionTernSecure_exports = {};
21
- __export(SessionTernSecure_exports, {
22
- verifyFirebaseToken: () => verifyFirebaseToken
23
- });
24
- module.exports = __toCommonJS(SessionTernSecure_exports);
25
- var import_admin = require("@tern-secure/backend/admin");
26
- async function verifyFirebaseToken(token) {
27
- if (!token) {
28
- return {
29
- valid: false,
30
- error: {
31
- success: false,
32
- code: "INVALID_TOKEN",
33
- message: "Token is required for verification"
34
- }
35
- };
36
- }
37
- try {
38
- return await (0, import_admin.VerifyNextTernSessionCookie)(token);
39
- } catch (error) {
40
- console.error("Error verifying token:", error);
41
- return {
42
- valid: false,
43
- error: {
44
- success: false,
45
- code: "INVALID_TOKEN",
46
- message: error instanceof Error ? error.message : "Token verification failed"
47
- }
48
- };
49
- }
50
- }
51
- // Annotate the CommonJS export names for ESM import in node:
52
- 0 && (module.exports = {
53
- verifyFirebaseToken
54
- });
55
- //# sourceMappingURL=SessionTernSecure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/server/node/SessionTernSecure.ts"],"sourcesContent":["\"use server\";\n\nimport { VerifyNextTernSessionCookie } from \"@tern-secure/backend/admin\";\nimport type { TernVerificationResult } from \"@tern-secure/types\";\n\nexport async function verifyFirebaseToken(\n token: string\n): Promise<TernVerificationResult> {\n if (!token) {\n return {\n valid: false,\n error: {\n success: false,\n code: \"INVALID_TOKEN\",\n message: \"Token is required for verification\",\n },\n };\n }\n\n try {\n return await VerifyNextTernSessionCookie(token);\n } catch (error) {\n console.error(\"Error verifying token:\", error);\n return {\n valid: false,\n error: {\n success: false,\n code: \"INVALID_TOKEN\",\n message:\n error instanceof Error ? error.message : \"Token verification failed\",\n },\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA4C;AAG5C,eAAsB,oBACpB,OACiC;AACjC,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AACF,WAAO,UAAM,0CAA4B,KAAK;AAAA,EAChD,SAAS,OAAO;AACd,YAAQ,MAAM,0BAA0B,KAAK;AAC7C,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SACE,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var auth_exports = {};
20
- __export(auth_exports, {
21
- auth: () => auth,
22
- getUser: () => getUser,
23
- isAuthenticated: () => isAuthenticated,
24
- requireAuth: () => requireAuth
25
- });
26
- module.exports = __toCommonJS(auth_exports);
27
- var import_headers = require("next/headers");
28
- var import_react = require("react");
29
- var import_errors = require("../../errors");
30
- var import_SessionTernSecure = require("./SessionTernSecure");
31
- const auth = (0, import_react.cache)(async () => {
32
- try {
33
- const cookieStore = await (0, import_headers.cookies)();
34
- const sessionCookie = cookieStore.get("_session_cookie")?.value;
35
- if (sessionCookie) {
36
- const result = await (0, import_SessionTernSecure.verifyFirebaseToken)(sessionCookie);
37
- if (result.valid) {
38
- const user = {
39
- uid: result.uid ?? "",
40
- email: result.email && typeof result.email === "string" ? result.email : null,
41
- tenantId: result.tenant || "default",
42
- authTime: result.authTime && typeof result.authTime === "number" ? result.authTime : void 0
43
- };
44
- return { user, error: null };
45
- }
46
- }
47
- return {
48
- user: null,
49
- error: new import_errors.TernSecureError("UNAUTHENTICATED", "No valid session found")
50
- };
51
- } catch (error) {
52
- console.error("Error in Auth:", error);
53
- if (error instanceof import_errors.TernSecureError) {
54
- return {
55
- user: null,
56
- error
57
- };
58
- }
59
- return {
60
- user: null,
61
- error: new import_errors.TernSecureError(
62
- "INTERNAL_ERROR",
63
- "An unexpected error occurred"
64
- )
65
- };
66
- }
67
- });
68
- const isAuthenticated = (0, import_react.cache)(async () => {
69
- const { user } = await auth();
70
- return user !== null;
71
- });
72
- const getUser = (0, import_react.cache)(async () => {
73
- const { user } = await auth();
74
- return user;
75
- });
76
- const requireAuth = (0, import_react.cache)(async () => {
77
- const { user, error } = await auth();
78
- if (!user) {
79
- throw error || new Error("Authentication required");
80
- }
81
- return user;
82
- });
83
- // Annotate the CommonJS export names for ESM import in node:
84
- 0 && (module.exports = {
85
- auth,
86
- getUser,
87
- isAuthenticated,
88
- requireAuth
89
- });
90
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/server/node/auth.ts"],"sourcesContent":["import { cookies } from \"next/headers\";\nimport { cache } from \"react\";\n\nimport { TernSecureError } from \"../../errors\";\nimport type { BaseUser } from \"../../types\";\nimport { verifyFirebaseToken } from \"./SessionTernSecure\";\n\nexport interface AuthResult {\n user: BaseUser | null;\n error: Error | null;\n}\n\n/**\n * Get the current authenticated user from the session cookies\n */\nexport const auth = cache(async (): Promise<AuthResult> => {\n try {\n const cookieStore = await cookies();\n\n const sessionCookie = cookieStore.get(\"_session_cookie\")?.value;\n if (sessionCookie) {\n const result = await verifyFirebaseToken(sessionCookie);\n if (result.valid) {\n const user: BaseUser = {\n uid: result.uid ?? \"\",\n email:\n result.email && typeof result.email === \"string\"\n ? result.email\n : null,\n tenantId: result.tenant || \"default\",\n authTime:\n result.authTime && typeof result.authTime === \"number\"\n ? result.authTime\n : undefined,\n };\n return { user, error: null };\n }\n }\n\n return {\n user: null,\n error: new TernSecureError(\"UNAUTHENTICATED\", \"No valid session found\"),\n };\n } catch (error) {\n console.error(\"Error in Auth:\", error);\n if (error instanceof TernSecureError) {\n return {\n user: null,\n error,\n };\n }\n return {\n user: null,\n error: new TernSecureError(\n \"INTERNAL_ERROR\",\n \"An unexpected error occurred\"\n ),\n };\n }\n});\n\n/**\n * Type guard to check if user is authenticated\n */\nexport const isAuthenticated = cache(async (): Promise<boolean> => {\n const { user } = await auth();\n return user !== null;\n});\n\n/**\n * Get user info from auth result\n */\nexport const getUser = cache(async (): Promise<BaseUser | null> => {\n const { user } = await auth();\n return user;\n});\n\n/**\n * Require authentication\n * Throws error if not authenticated\n */\nexport const requireAuth = cache(async (): Promise<BaseUser> => {\n const { user, error } = await auth();\n\n if (!user) {\n throw error || new Error(\"Authentication required\");\n }\n\n return user;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAwB;AACxB,mBAAsB;AAEtB,oBAAgC;AAEhC,+BAAoC;AAU7B,MAAM,WAAO,oBAAM,YAAiC;AACzD,MAAI;AACF,UAAM,cAAc,UAAM,wBAAQ;AAElC,UAAM,gBAAgB,YAAY,IAAI,iBAAiB,GAAG;AAC1D,QAAI,eAAe;AACjB,YAAM,SAAS,UAAM,8CAAoB,aAAa;AACtD,UAAI,OAAO,OAAO;AAChB,cAAM,OAAiB;AAAA,UACrB,KAAK,OAAO,OAAO;AAAA,UACnB,OACE,OAAO,SAAS,OAAO,OAAO,UAAU,WACpC,OAAO,QACP;AAAA,UACN,UAAU,OAAO,UAAU;AAAA,UAC3B,UACE,OAAO,YAAY,OAAO,OAAO,aAAa,WAC1C,OAAO,WACP;AAAA,QACR;AACA,eAAO,EAAE,MAAM,OAAO,KAAK;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,IAAI,8BAAgB,mBAAmB,wBAAwB;AAAA,IACxE;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,kBAAkB,KAAK;AACrC,QAAI,iBAAiB,+BAAiB;AACpC,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAKM,MAAM,sBAAkB,oBAAM,YAA8B;AACjE,QAAM,EAAE,KAAK,IAAI,MAAM,KAAK;AAC5B,SAAO,SAAS;AAClB,CAAC;AAKM,MAAM,cAAU,oBAAM,YAAsC;AACjE,QAAM,EAAE,KAAK,IAAI,MAAM,KAAK;AAC5B,SAAO;AACT,CAAC;AAMM,MAAM,kBAAc,oBAAM,YAA+B;AAC9D,QAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK;AAEnC,MAAI,CAAC,MAAM;AACT,UAAM,SAAS,IAAI,MAAM,yBAAyB;AAAA,EACpD;AAEA,SAAO;AACT,CAAC;","names":[]}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var node_exports = {};
20
- __export(node_exports, {
21
- auth: () => import_auth.auth,
22
- createRouteMatcher: () => import_ternSecureNodeMiddleware.createRouteMatcher,
23
- getUser: () => import_auth.getUser,
24
- isAuthenticated: () => import_auth.isAuthenticated,
25
- requireAuth: () => import_auth.requireAuth,
26
- ternSecureMiddleware: () => import_ternSecureNodeMiddleware.ternSecureMiddleware
27
- });
28
- module.exports = __toCommonJS(node_exports);
29
- var import_ternSecureNodeMiddleware = require("./ternSecureNodeMiddleware");
30
- var import_auth = require("./auth");
31
- // Annotate the CommonJS export names for ESM import in node:
32
- 0 && (module.exports = {
33
- auth,
34
- createRouteMatcher,
35
- getUser,
36
- isAuthenticated,
37
- requireAuth,
38
- ternSecureMiddleware
39
- });
40
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/server/node/index.ts"],"sourcesContent":["export {\n ternSecureMiddleware,\n createRouteMatcher,\n} from \"./ternSecureNodeMiddleware\";\nexport {\n auth,\n getUser,\n isAuthenticated,\n requireAuth,\n type AuthResult,\n} from \"./auth\";"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAGO;AACP,kBAMO;","names":[]}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var node_session_exports = {};
20
- __export(node_session_exports, {
21
- verifySession: () => verifySession
22
- });
23
- module.exports = __toCommonJS(node_session_exports);
24
- var import_SessionTernSecure = require("./SessionTernSecure");
25
- async function verifySession(request) {
26
- try {
27
- const sessionCookie = request.cookies.get("_session_cookie")?.value;
28
- if (sessionCookie) {
29
- const result = await (0, import_SessionTernSecure.verifyFirebaseToken)(sessionCookie);
30
- if (result.valid) {
31
- return {
32
- isAuthenticated: true,
33
- user: {
34
- uid: result.uid ?? "",
35
- email: result.email || null,
36
- tenantId: result.tenant || "default",
37
- disabled: false
38
- }
39
- };
40
- }
41
- }
42
- return {
43
- isAuthenticated: false,
44
- user: null,
45
- error: "No valid session found"
46
- };
47
- } catch (error) {
48
- console.error("Session verification error:", error);
49
- return {
50
- isAuthenticated: false,
51
- user: null,
52
- error: error instanceof Error ? error.message : "Session verification failed"
53
- };
54
- }
55
- }
56
- // Annotate the CommonJS export names for ESM import in node:
57
- 0 && (module.exports = {
58
- verifySession
59
- });
60
- //# sourceMappingURL=node-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/server/node/node-session.ts"],"sourcesContent":["import type { NextRequest } from \"next/server\";\n\nimport type { SessionResult } from \"../types\";\nimport { verifyFirebaseToken } from \"./SessionTernSecure\";\n\nexport async function verifySession(\n request: NextRequest\n): Promise<SessionResult> {\n try {\n const sessionCookie = request.cookies.get(\"_session_cookie\")?.value;\n if (sessionCookie) {\n const result = await verifyFirebaseToken(sessionCookie);\n if (result.valid) {\n //const disabledKey = `disabled_user:${result.uid}`;\n //const disabledUser: DisabledUserRecord | null =\n // await redis.get(disabledKey);\n //const isDisabled = !!disabledUser;\n return {\n isAuthenticated: true,\n user: {\n uid: result.uid ?? \"\",\n email: result.email || null,\n tenantId: result.tenant || \"default\",\n disabled: false,\n },\n };\n }\n }\n return {\n isAuthenticated: false,\n user: null,\n error: \"No valid session found\",\n };\n } catch (error) {\n console.error(\"Session verification error:\", error);\n return {\n isAuthenticated: false,\n user: null,\n error:\n error instanceof Error ? error.message : \"Session verification failed\",\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,+BAAoC;AAEpC,eAAsB,cACpB,SACwB;AACxB,MAAI;AACF,UAAM,gBAAgB,QAAQ,QAAQ,IAAI,iBAAiB,GAAG;AAC9D,QAAI,eAAe;AACjB,YAAM,SAAS,UAAM,8CAAoB,aAAa;AACtD,UAAI,OAAO,OAAO;AAKhB,eAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,MAAM;AAAA,YACJ,KAAK,OAAO,OAAO;AAAA,YACnB,OAAO,OAAO,SAAS;AAAA,YACvB,UAAU,OAAO,UAAU;AAAA,YAC3B,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,+BAA+B,KAAK;AAClD,WAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,OACE,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAC7C;AAAA,EACF;AACF;","names":[]}
@@ -1,181 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ternSecureNodeMiddleware_exports = {};
20
- __export(ternSecureNodeMiddleware_exports, {
21
- createRouteMatcher: () => createRouteMatcher,
22
- ternSecureMiddleware: () => ternSecureMiddleware
23
- });
24
- module.exports = __toCommonJS(ternSecureNodeMiddleware_exports);
25
- var import_backend = require("@tern-secure/backend");
26
- var import_admin = require("@tern-secure/backend/admin");
27
- var import_server = require("next/server");
28
- var import_constant = require("../constant");
29
- var import_nextErrors = require("../nextErrors");
30
- const createRouteMatcher = (patterns) => {
31
- return (request) => {
32
- const { pathname } = request.nextUrl;
33
- return patterns.some((pattern) => {
34
- const regexPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\\\*/g, ".*");
35
- return new RegExp(`^${regexPattern}$`).test(pathname);
36
- });
37
- };
38
- };
39
- const authenticateMiddlewareRequest = async (request) => {
40
- try {
41
- const requestState = await (0, import_admin.createBackendInstance)(request);
42
- const authResult = requestState.requestState.auth();
43
- return {
44
- user: {
45
- uid: authResult.session.uid,
46
- email: authResult.session.email || null,
47
- tenantId: authResult.session.firebase?.tenant || "default",
48
- authTime: authResult.session.auth_time
49
- },
50
- session: requestState.requestState.token
51
- };
52
- } catch (error) {
53
- console.error(
54
- "Auth check error:",
55
- error instanceof Error ? error.message : "Unknown error"
56
- );
57
- return {
58
- user: null,
59
- session: null
60
- };
61
- }
62
- };
63
- const ternSecureMiddleware = (...args) => {
64
- const [request, event] = parseRequestAndEvent(args);
65
- const [handler, params] = parseHandlerAndOptions(args);
66
- const middleware = () => {
67
- const withAuthNextMiddleware = async (request2, event2) => {
68
- const resolvedParams = typeof params === "function" ? await params(request2) : params;
69
- const signInUrl = resolvedParams.signInUrl || import_constant.SIGN_IN_URL;
70
- const signUpUrl = resolvedParams.signUpUrl || import_constant.SIGN_UP_URL;
71
- let handlerResult = import_server.NextResponse.next();
72
- if (handler) {
73
- const createAuthHandler = async () => {
74
- const authObject = await authenticateMiddlewareRequest(request2);
75
- const getAuth = async () => {
76
- const ternSecureRequest = (0, import_backend.createTernSecureRequest)(request2);
77
- const { redirectToSignIn, redirectToSignUp } = createMiddlewareRedirects(
78
- ternSecureRequest,
79
- signInUrl,
80
- signUpUrl
81
- );
82
- return {
83
- ...authObject,
84
- redirectToSignIn,
85
- redirectToSignUp
86
- };
87
- };
88
- const protect = async () => {
89
- if (!authObject.user || !authObject.session) {
90
- const redirectUrl = new URL(signInUrl || "/sign-in", request2.url);
91
- redirectUrl.searchParams.set(
92
- "redirect",
93
- request2.nextUrl.pathname
94
- );
95
- (0, import_nextErrors.redirectToSignInError)(redirectUrl.toString());
96
- }
97
- };
98
- const authHandler = Object.assign(getAuth, {
99
- protect,
100
- user: authObject.user,
101
- session: authObject.session
102
- });
103
- return authHandler;
104
- };
105
- try {
106
- const auth = await createAuthHandler();
107
- const userHandlerResult = await handler(auth, request2, event2);
108
- handlerResult = userHandlerResult || handlerResult;
109
- } catch (error) {
110
- const ternSecureRequest = (0, import_backend.createTernSecureRequest)(request2);
111
- handlerResult = handleControlError(error, ternSecureRequest, request2);
112
- }
113
- return handlerResult;
114
- }
115
- return handlerResult;
116
- };
117
- const nextMiddleware = async (request2, event2) => {
118
- return withAuthNextMiddleware(request2, event2);
119
- };
120
- if (request && event) {
121
- return nextMiddleware(request, event);
122
- }
123
- return nextMiddleware;
124
- };
125
- return middleware();
126
- };
127
- const parseRequestAndEvent = (args) => {
128
- return [
129
- args[0] instanceof Request ? args[0] : void 0,
130
- args[0] instanceof Request ? args[1] : void 0
131
- ];
132
- };
133
- const parseHandlerAndOptions = (args) => {
134
- return [
135
- typeof args[0] === "function" ? args[0] : void 0,
136
- (args.length === 2 ? args[1] : typeof args[0] === "function" ? {} : args[0]) || {}
137
- ];
138
- };
139
- const createMiddlewareRedirects = (ternSecureRequest, signInUrl, signUpUrl) => {
140
- const redirectToSignIn = (opts = {}) => {
141
- const url = signInUrl || ternSecureRequest.ternUrl.toString();
142
- (0, import_nextErrors.redirectToSignInError)(url, opts.returnBackUrl);
143
- };
144
- const redirectToSignUp = (opts = {}) => {
145
- const url = signUpUrl || ternSecureRequest.ternUrl.toString();
146
- (0, import_nextErrors.redirectToSignUpError)(url, opts.returnBackUrl);
147
- };
148
- return { redirectToSignIn, redirectToSignUp };
149
- };
150
- const handleControlError = (error, ternSecureRequest, nextrequest) => {
151
- if ((0, import_nextErrors.isNextjsNotFoundError)(error)) {
152
- return import_server.NextResponse.rewrite(new URL("/404", nextrequest.url));
153
- }
154
- if ((0, import_nextErrors.isRedirectToSignInError)(error)) {
155
- const redirectAdapter = (url) => import_server.NextResponse.redirect(new URL(url, nextrequest.url));
156
- const { redirectToSignIn } = (0, import_backend.createRedirect)({
157
- redirectAdapter,
158
- baseUrl: ternSecureRequest.ternUrl.origin,
159
- signInUrl: import_constant.SIGN_IN_URL,
160
- signUpUrl: import_constant.SIGN_UP_URL
161
- });
162
- return redirectToSignIn({ returnBackUrl: error.returnBackUrl });
163
- }
164
- if ((0, import_nextErrors.isRedirectToSignUpError)(error)) {
165
- const redirectAdapter = (url) => import_server.NextResponse.redirect(new URL(url, nextrequest.url));
166
- const { redirectToSignUp } = (0, import_backend.createRedirect)({
167
- redirectAdapter,
168
- baseUrl: ternSecureRequest.ternUrl.origin,
169
- signInUrl: import_constant.SIGN_IN_URL,
170
- signUpUrl: import_constant.SIGN_UP_URL
171
- });
172
- return redirectToSignUp({ returnBackUrl: error.returnBackUrl });
173
- }
174
- throw error;
175
- };
176
- // Annotate the CommonJS export names for ESM import in node:
177
- 0 && (module.exports = {
178
- createRouteMatcher,
179
- ternSecureMiddleware
180
- });
181
- //# sourceMappingURL=ternSecureNodeMiddleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/server/node/ternSecureNodeMiddleware.ts"],"sourcesContent":["import {createRedirect, createTernSecureRequest, type TernSecureRequest } from \"@tern-secure/backend\";\nimport {\n createBackendInstance,\n} from \"@tern-secure/backend/admin\";\nimport type { NextMiddleware,NextRequest } from \"next/server\";\nimport {NextResponse } from \"next/server\";\n\nimport { SIGN_IN_URL, SIGN_UP_URL } from \"../constant\";\nimport {\n isNextjsNotFoundError,\n isRedirectToSignInError,\n isRedirectToSignUpError,\n redirectToSignInError,\n redirectToSignUpError,\n} from \"../nextErrors\";\nimport type { BaseUser ,\n NextMiddlewareEvtParam,\n NextMiddlewareRequestParam,\n NextMiddlewareReturn,\n} from \"../types\";\n\ntype RedirectToParams = { returnBackUrl?: string | URL | null };\nexport type RedirectFun<ReturnType> = (params?: RedirectToParams) => ReturnType;\n\nexport type AuthObject = {\n user: BaseUser | null;\n session: string | null;\n};\n\nexport interface MiddlewareAuth extends AuthObject {\n (): Promise<MiddlewareAuthObject>;\n protect: () => Promise<void>;\n}\n\ntype MiddlewareHandler = (\n auth: MiddlewareAuth,\n request: NextMiddlewareRequestParam,\n event: NextMiddlewareEvtParam\n) => NextMiddlewareReturn;\n\nexport type MiddlewareAuthObject = AuthObject & {\n redirectToSignIn: RedirectFun<Response>;\n redirectToSignUp: RedirectFun<Response>;\n};\n\n/**\n * Create a route matcher function for public paths\n */\nexport const createRouteMatcher = (patterns: string[]) => {\n return (request: NextRequest): boolean => {\n const { pathname } = request.nextUrl;\n return patterns.some((pattern) => {\n const regexPattern = pattern\n .replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n .replace(/\\\\\\*/g, \".*\");\n\n return new RegExp(`^${regexPattern}$`).test(pathname);\n });\n };\n};\n\nconst authenticateMiddlewareRequest = async (\n request: NextRequest\n): Promise<AuthObject> => {\n try {\n const requestState = await createBackendInstance(request);\n const authResult = requestState.requestState.auth();\n\n return {\n user: {\n uid: authResult.session.uid,\n email: authResult.session.email || null,\n tenantId: authResult.session.firebase?.tenant || \"default\",\n authTime: authResult.session.auth_time,\n },\n session: requestState.requestState.token,\n };\n } catch (error) {\n console.error(\n \"Auth check error:\",\n error instanceof Error ? error.message : \"Unknown error\"\n );\n return {\n user: null,\n session: null,\n };\n }\n};\n\nexport interface MiddlewareOptions {\n signInUrl?: string;\n signUpUrl?: string;\n debug?: boolean;\n}\ntype MiddlewareOptionsCallback = (\n req: NextRequest\n) => MiddlewareOptions | Promise<MiddlewareOptions>;\n\ninterface TernSecureMiddleware {\n /**\n * @example\n * export default ternSecureMiddleware((auth, request, event) => { ... }, options);\n */\n (handler: MiddlewareHandler, options?: MiddlewareOptions): NextMiddleware;\n\n /**\n * @example\n * export default ternSecureMiddleware((auth, request, event) => { ... }, (req) => options);\n */\n (\n handler: MiddlewareHandler,\n options?: MiddlewareOptionsCallback\n ): NextMiddleware;\n\n /**\n * @example\n * export default ternSecureMiddleware(options);\n */\n (options?: MiddlewareOptions): NextMiddleware;\n /**\n * @example\n * export default ternSecureMiddleware;\n */\n (\n request: NextMiddlewareRequestParam,\n event: NextMiddlewareEvtParam\n ): NextMiddlewareReturn;\n}\n\nexport const ternSecureMiddleware = ((\n ...args: unknown[]\n): NextMiddleware | NextMiddlewareReturn => {\n const [request, event] = parseRequestAndEvent(args);\n const [handler, params] = parseHandlerAndOptions(args);\n\n const middleware = () => {\n const withAuthNextMiddleware: NextMiddleware = async (request, event) => {\n const resolvedParams =\n typeof params === \"function\" ? await params(request) : params;\n\n const signInUrl = resolvedParams.signInUrl || SIGN_IN_URL;\n const signUpUrl = resolvedParams.signUpUrl || SIGN_UP_URL;\n\n let handlerResult: Response = NextResponse.next();\n\n if (handler) {\n const createAuthHandler = async (): Promise<MiddlewareAuth> => {\n const authObject = await authenticateMiddlewareRequest(request);\n\n const getAuth = async (): Promise<MiddlewareAuthObject> => {\n const ternSecureRequest = createTernSecureRequest(request);\n const { redirectToSignIn, redirectToSignUp } =\n createMiddlewareRedirects(\n ternSecureRequest,\n signInUrl,\n signUpUrl\n );\n\n return {\n ...authObject,\n redirectToSignIn,\n redirectToSignUp,\n };\n };\n\n const protect = async (): Promise<void> => {\n if (!authObject.user || !authObject.session) {\n const redirectUrl = new URL(signInUrl || \"/sign-in\", request.url);\n redirectUrl.searchParams.set(\n \"redirect\",\n request.nextUrl.pathname\n );\n redirectToSignInError(redirectUrl.toString());\n }\n };\n\n // Return the MiddlewareAuth object with direct property access\n const authHandler = Object.assign(getAuth, {\n protect,\n user: authObject.user,\n session: authObject.session,\n });\n\n return authHandler as MiddlewareAuth;\n };\n\n try {\n const auth = await createAuthHandler();\n const userHandlerResult = await handler(auth, request, event);\n handlerResult = userHandlerResult || handlerResult;\n } catch (error) {\n const ternSecureRequest = createTernSecureRequest(request);\n handlerResult = handleControlError(error, ternSecureRequest, request);\n }\n\n return handlerResult;\n }\n\n return handlerResult;\n };\n\n const nextMiddleware: NextMiddleware = async (request, event) => {\n return withAuthNextMiddleware(request, event);\n };\n\n if (request && event) {\n return nextMiddleware(request, event);\n }\n\n return nextMiddleware;\n };\n return middleware();\n}) as TernSecureMiddleware;\n\nconst parseRequestAndEvent = (args: unknown[]) => {\n return [\n args[0] instanceof Request ? args[0] : undefined,\n args[0] instanceof Request ? args[1] : undefined,\n ] as [\n NextMiddlewareRequestParam | undefined,\n NextMiddlewareEvtParam | undefined,\n ];\n};\n\nconst parseHandlerAndOptions = (args: unknown[]) => {\n return [\n typeof args[0] === \"function\" ? args[0] : undefined,\n (args.length === 2\n ? args[1]\n : typeof args[0] === \"function\"\n ? {}\n : args[0]) || {},\n ] as [\n MiddlewareHandler | undefined,\n MiddlewareOptions | MiddlewareOptionsCallback,\n ];\n};\n\n/**\n * Create middleware redirect functions\n */\nconst createMiddlewareRedirects = (\n ternSecureRequest: TernSecureRequest,\n signInUrl: string,\n signUpUrl: string\n) => {\n const redirectToSignIn: MiddlewareAuthObject[\"redirectToSignIn\"] = (\n opts = {}\n ) => {\n const url = signInUrl || ternSecureRequest.ternUrl.toString();\n redirectToSignInError(url, opts.returnBackUrl);\n };\n\n const redirectToSignUp: MiddlewareAuthObject[\"redirectToSignUp\"] = (\n opts = {}\n ) => {\n const url = signUpUrl || ternSecureRequest.ternUrl.toString();\n redirectToSignUpError(url, opts.returnBackUrl);\n };\n\n return { redirectToSignIn, redirectToSignUp };\n};\n\n/**\n * Handle control flow errors in middleware\n */\nconst handleControlError = (\n error: any,\n ternSecureRequest: TernSecureRequest,\n nextrequest: NextRequest\n): Response => {\n if (isNextjsNotFoundError(error)) {\n return NextResponse.rewrite(new URL(\"/404\", nextrequest.url));\n }\n\n // Handle redirect to sign in errors\n if (isRedirectToSignInError(error)) {\n const redirectAdapter = (url: string) =>\n NextResponse.redirect(new URL(url, nextrequest.url));\n const { redirectToSignIn } = createRedirect({\n redirectAdapter,\n baseUrl: ternSecureRequest.ternUrl.origin,\n signInUrl: SIGN_IN_URL,\n signUpUrl: SIGN_UP_URL,\n });\n\n return redirectToSignIn({ returnBackUrl: error.returnBackUrl });\n }\n\n // Handle redirect to sign up errors\n if (isRedirectToSignUpError(error)) {\n const redirectAdapter = (url: string) =>\n NextResponse.redirect(new URL(url, nextrequest.url));\n const { redirectToSignUp } = createRedirect({\n redirectAdapter,\n baseUrl: ternSecureRequest.ternUrl.origin,\n signInUrl: SIGN_IN_URL,\n signUpUrl: SIGN_UP_URL,\n });\n\n return redirectToSignUp({ returnBackUrl: error.returnBackUrl });\n }\n\n throw error;\n};\n"],"mappings":"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","names":["request","event"]}
@@ -1,31 +0,0 @@
1
- "use server";
2
- import { VerifyNextTernSessionCookie } from "@tern-secure/backend/admin";
3
- async function verifyFirebaseToken(token) {
4
- if (!token) {
5
- return {
6
- valid: false,
7
- error: {
8
- success: false,
9
- code: "INVALID_TOKEN",
10
- message: "Token is required for verification"
11
- }
12
- };
13
- }
14
- try {
15
- return await VerifyNextTernSessionCookie(token);
16
- } catch (error) {
17
- console.error("Error verifying token:", error);
18
- return {
19
- valid: false,
20
- error: {
21
- success: false,
22
- code: "INVALID_TOKEN",
23
- message: error instanceof Error ? error.message : "Token verification failed"
24
- }
25
- };
26
- }
27
- }
28
- export {
29
- verifyFirebaseToken
30
- };
31
- //# sourceMappingURL=SessionTernSecure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/server/node/SessionTernSecure.ts"],"sourcesContent":["\"use server\";\n\nimport { VerifyNextTernSessionCookie } from \"@tern-secure/backend/admin\";\nimport type { TernVerificationResult } from \"@tern-secure/types\";\n\nexport async function verifyFirebaseToken(\n token: string\n): Promise<TernVerificationResult> {\n if (!token) {\n return {\n valid: false,\n error: {\n success: false,\n code: \"INVALID_TOKEN\",\n message: \"Token is required for verification\",\n },\n };\n }\n\n try {\n return await VerifyNextTernSessionCookie(token);\n } catch (error) {\n console.error(\"Error verifying token:\", error);\n return {\n valid: false,\n error: {\n success: false,\n code: \"INVALID_TOKEN\",\n message:\n error instanceof Error ? error.message : \"Token verification failed\",\n },\n };\n }\n}\n"],"mappings":";AAEA,SAAS,mCAAmC;AAG5C,eAAsB,oBACpB,OACiC;AACjC,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AACF,WAAO,MAAM,4BAA4B,KAAK;AAAA,EAChD,SAAS,OAAO;AACd,YAAQ,MAAM,0BAA0B,KAAK;AAC7C,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SACE,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACF;","names":[]}