@tern-secure/nextjs 3.2.18 → 3.2.20

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 (30) hide show
  1. package/dist/cjs/app-router/server/auth.js +71 -0
  2. package/dist/cjs/app-router/server/auth.js.map +1 -0
  3. package/dist/cjs/app-router/server/index.js +2 -2
  4. package/dist/cjs/app-router/server/index.js.map +1 -1
  5. package/dist/cjs/app-router/server/sessionTernSecure.js +6 -6
  6. package/dist/cjs/app-router/server/sessionTernSecure.js.map +1 -1
  7. package/dist/cjs/app-router/server/ternSecureMiddleware.js +18 -25
  8. package/dist/cjs/app-router/server/ternSecureMiddleware.js.map +1 -1
  9. package/dist/cjs/boundary/TernSecureClientProvider.js +2 -7
  10. package/dist/cjs/boundary/TernSecureClientProvider.js.map +1 -1
  11. package/dist/esm/app-router/server/auth.js +47 -0
  12. package/dist/esm/app-router/server/auth.js.map +1 -0
  13. package/dist/esm/app-router/server/index.js +2 -2
  14. package/dist/esm/app-router/server/index.js.map +1 -1
  15. package/dist/esm/app-router/server/sessionTernSecure.js +4 -4
  16. package/dist/esm/app-router/server/sessionTernSecure.js.map +1 -1
  17. package/dist/esm/app-router/server/ternSecureMiddleware.js +18 -25
  18. package/dist/esm/app-router/server/ternSecureMiddleware.js.map +1 -1
  19. package/dist/esm/boundary/TernSecureClientProvider.js +2 -7
  20. package/dist/esm/boundary/TernSecureClientProvider.js.map +1 -1
  21. package/dist/types/app-router/server/auth.d.ts +7 -0
  22. package/dist/types/app-router/server/auth.d.ts.map +1 -0
  23. package/dist/types/app-router/server/index.d.ts +1 -1
  24. package/dist/types/app-router/server/index.d.ts.map +1 -1
  25. package/dist/types/app-router/server/sessionTernSecure.d.ts +4 -8
  26. package/dist/types/app-router/server/sessionTernSecure.d.ts.map +1 -1
  27. package/dist/types/app-router/server/ternSecureMiddleware.d.ts +6 -3
  28. package/dist/types/app-router/server/ternSecureMiddleware.d.ts.map +1 -1
  29. package/dist/types/boundary/TernSecureClientProvider.d.ts.map +1 -1
  30. package/package.json +1 -1
@@ -0,0 +1,71 @@
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 auth_exports = {};
21
+ __export(auth_exports, {
22
+ auth: () => auth
23
+ });
24
+ module.exports = __toCommonJS(auth_exports);
25
+ var import_headers = require("next/headers");
26
+ var import_sessionTernSecure = require("./sessionTernSecure");
27
+ async function auth() {
28
+ var _a, _b;
29
+ try {
30
+ const cookieStore = await (0, import_headers.cookies)();
31
+ const sessionCookie = (_a = cookieStore.get("_session_cookie")) == null ? void 0 : _a.value;
32
+ if (sessionCookie) {
33
+ const sessionResult = await (0, import_sessionTernSecure.verifyTernSessionCookie)(sessionCookie);
34
+ if (sessionResult.valid) {
35
+ return {
36
+ userId: sessionResult.uid,
37
+ token: sessionCookie,
38
+ error: null
39
+ };
40
+ }
41
+ }
42
+ const idToken = (_b = cookieStore.get("_session_token")) == null ? void 0 : _b.value;
43
+ if (idToken) {
44
+ const tokenResult = await (0, import_sessionTernSecure.verifyTernIDToken)(idToken);
45
+ if (tokenResult.valid) {
46
+ return {
47
+ userId: tokenResult.uid,
48
+ token: idToken,
49
+ error: null
50
+ };
51
+ }
52
+ }
53
+ return {
54
+ userId: null,
55
+ token: null,
56
+ error: new Error("No valid session or token found")
57
+ };
58
+ } catch (error) {
59
+ console.error("Error in auth function:", error);
60
+ return {
61
+ userId: null,
62
+ token: null,
63
+ error: error instanceof Error ? error : new Error("An unknown error occurred")
64
+ };
65
+ }
66
+ }
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ auth
70
+ });
71
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/app-router/server/auth.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { verifyTernIDToken, verifyTernSessionCookie } from './sessionTernSecure';\r\n\r\nexport interface AuthResult {\r\n userId: string | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\nexport async function auth(): Promise<AuthResult> {\r\n try {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n if (sessionCookie) {\r\n const sessionResult = await verifyTernSessionCookie(sessionCookie);\r\n if (sessionResult.valid) {\r\n return {\r\n userId: sessionResult.uid,\r\n token: sessionCookie,\r\n error: null\r\n };\r\n }\r\n }\r\n\r\n // If session cookie is not present or invalid, try the ID token\r\n const idToken = cookieStore.get('_session_token')?.value;\r\n if (idToken) {\r\n const tokenResult = await verifyTernIDToken(idToken);\r\n if (tokenResult.valid) {\r\n return {\r\n userId: tokenResult.uid,\r\n token: idToken,\r\n error: null\r\n };\r\n }\r\n }\r\n\r\n // If both checks fail, return null values\r\n return {\r\n userId: null,\r\n token: null,\r\n error: new Error('No valid session or token found')\r\n };\r\n } catch (error) {\r\n console.error('Error in auth function:', error);\r\n return {\r\n userId: null,\r\n token: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n };\r\n }\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAwB;AACxB,+BAA4D;AAQ5D,eAAsB,OAA4B;AAXlD;AAYE,MAAI;AACF,UAAM,cAAc,UAAM,wBAAQ;AAClC,UAAM,iBAAgB,iBAAY,IAAI,iBAAiB,MAAjC,mBAAoC;AAC1D,QAAI,eAAe;AACjB,YAAM,gBAAgB,UAAM,kDAAwB,aAAa;AACjE,UAAI,cAAc,OAAO;AACvB,eAAO;AAAA,UACL,QAAQ,cAAc;AAAA,UACtB,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAGA,UAAM,WAAU,iBAAY,IAAI,gBAAgB,MAAhC,mBAAmC;AACnD,QAAI,SAAS;AACX,YAAM,cAAc,UAAM,4CAAkB,OAAO;AACnD,UAAI,YAAY,OAAO;AACrB,eAAO;AAAA,UACL,QAAQ,YAAY;AAAA,UACpB,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO,IAAI,MAAM,iCAAiC;AAAA,IACpD;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,2BAA2B,KAAK;AAC9C,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,IAC/E;AAAA,EACF;AACF;","names":[]}
@@ -22,7 +22,7 @@ __export(server_exports, {
22
22
  adminTernSecureDb: () => import_admin_init.adminTernSecureDb,
23
23
  createSessionCookie: () => import_sessionTernSecure.createSessionCookie,
24
24
  ternSecureMiddleware: () => import_ternSecureMiddleware.ternSecureMiddleware,
25
- verifySessionCookie: () => import_sessionTernSecure.verifySessionCookie
25
+ verifyTernSessionCookie: () => import_sessionTernSecure.verifyTernSessionCookie
26
26
  });
27
27
  module.exports = __toCommonJS(server_exports);
28
28
  var import_admin_init = require("../../utils/admin-init");
@@ -34,6 +34,6 @@ var import_sessionTernSecure = require("./sessionTernSecure");
34
34
  adminTernSecureDb,
35
35
  createSessionCookie,
36
36
  ternSecureMiddleware,
37
- verifySessionCookie
37
+ verifyTernSessionCookie
38
38
  });
39
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifySessionCookie, createSessionCookie } from './sessionTernSecure'"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuD;AACvD,kCAAqC;AACrC,+BAAyD;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure'"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuD;AACvD,kCAAqC;AACrC,+BAA6D;","names":[]}
@@ -23,8 +23,8 @@ __export(sessionTernSecure_exports, {
23
23
  getIdToken: () => getIdToken,
24
24
  getServerSessionCookie: () => getServerSessionCookie,
25
25
  setServerSession: () => setServerSession,
26
- verifyIDToken: () => verifyIDToken,
27
- verifySessionCookie: () => verifySessionCookie
26
+ verifyTernIDToken: () => verifyTernIDToken,
27
+ verifyTernSessionCookie: () => verifyTernSessionCookie
28
28
  });
29
29
  module.exports = __toCommonJS(sessionTernSecure_exports);
30
30
  var import_headers = require("next/headers");
@@ -92,7 +92,7 @@ async function setServerSession(token) {
92
92
  path: "/"
93
93
  });
94
94
  }
95
- async function verifyIDToken(token) {
95
+ async function verifyTernIDToken(token) {
96
96
  try {
97
97
  const res = await import_admin_init.adminTernSecureAuth.verifyIdToken(token);
98
98
  if (res) {
@@ -104,7 +104,7 @@ async function verifyIDToken(token) {
104
104
  return { error, valid: false };
105
105
  }
106
106
  }
107
- async function verifySessionCookie(session) {
107
+ async function verifyTernSessionCookie(session) {
108
108
  try {
109
109
  const res = await import_admin_init.adminTernSecureAuth.verifySessionCookie(session);
110
110
  if (res) {
@@ -122,7 +122,7 @@ async function verifySessionCookie(session) {
122
122
  getIdToken,
123
123
  getServerSessionCookie,
124
124
  setServerSession,
125
- verifyIDToken,
126
- verifySessionCookie
125
+ verifyTernIDToken,
126
+ verifyTernSessionCookie
127
127
  });
128
128
  //# sourceMappingURL=sessionTernSecure.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/sessionTernSecure.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { adminTernSecureAuth as adminAuth } from '../../utils/admin-init';\r\n\r\n\r\nexport interface User {\r\n uid: string;\r\n email: string;\r\n }\r\n\r\nexport interface Session {\r\n user: User | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\nexport async function createSessionCookie(idToken: string) {\r\n try {\r\n const expiresIn = 60 * 60 * 24 * 5 * 1000;\r\n const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });\r\n\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session_cookie', sessionCookie, {\r\n maxAge: expiresIn,\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n path: '/',\r\n });\r\n return { success: true, message: 'Session created' };\r\n } catch (error) {\r\n return { success: false, message: 'Failed to create session' };\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function getServerSessionCookie() {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n\r\n if (!sessionCookie) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie)\r\n return {\r\n token: sessionCookie,\r\n userId: decondeClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\n\r\nexport async function getIdToken() {\r\n const cookieStore = await cookies();\r\n const token = cookieStore.get('_session_token')?.value;\r\n\r\n if (!token) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifyIdToken(token)\r\n return {\r\n token: token,\r\n userId: decodedClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\nexport async function setServerSession(token: string) {\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session', token, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'strict',\r\n maxAge: 60 * 60, // 1 hour\r\n path: '/',\r\n });\r\n }\r\n\r\n export async function verifyIDToken(token: string){\r\n try {\r\n const res = await adminAuth.verifyIdToken(token);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid token'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n export async function verifySessionCookie(session: string): Promise<{ valid: boolean; uid?: any; error?: any }>{\r\n try {\r\n const res = await adminAuth.verifySessionCookie(session);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid session'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n\r\n\r\n/*\r\n export async function GET(request: NextRequest) {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('session')?.value\r\n \r\n if (!sessionCookie) {\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\r\n } catch (error) {\r\n console.error('Error verifying session cookie:', error)\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n }\r\n\r\n*/"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAwB;AACxB,wBAAiD;AAcjD,eAAsB,oBAAoB,SAAiB;AACzD,MAAI;AACF,UAAM,YAAY,KAAK,KAAK,KAAK,IAAI;AACnC,UAAM,gBAAgB,MAAM,kBAAAA,oBAAU,oBAAoB,SAAS,EAAE,UAAU,CAAC;AAEhF,UAAM,cAAc,UAAM,wBAAQ;AAClC,gBAAY,IAAI,mBAAmB,eAAe;AAAA,MAC9C,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,MACjC,MAAM;AAAA,IACV,CAAC;AACD,WAAO,EAAE,SAAS,MAAM,SAAS,kBAAkB;AAAA,EACvD,SAAS,OAAO;AACZ,WAAO,EAAE,SAAS,OAAO,SAAS,2BAA2B;AAAA,EACjE;AACF;AAIA,eAAsB,yBAAyB;AArC/C;AAsCE,QAAM,cAAc,UAAM,wBAAQ;AAClC,QAAM,iBAAgB,iBAAY,IAAI,iBAAiB,MAAjC,mBAAoC;AAE1D,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,kBAAAA,oBAAU,oBAAoB,aAAa;AACvE,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAGA,eAAsB,aAAa;AA1DnC;AA2DE,QAAM,cAAc,UAAM,wBAAQ;AAClC,QAAM,SAAQ,iBAAY,IAAI,gBAAgB,MAAhC,mBAAmC;AAEjD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,kBAAAA,oBAAU,cAAc,KAAK;AACzD,WAAO;AAAA,MACL;AAAA,MACA,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAEA,eAAsB,iBAAiB,OAAe;AAClD,QAAM,cAAc,UAAM,wBAAQ;AAClC,cAAY,IAAI,YAAY,OAAO;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,KAAK;AAAA;AAAA,IACb,MAAM;AAAA,EACR,CAAC;AACH;AAEA,eAAsB,cAAc,OAAc;AAChD,MAAI;AACF,UAAM,MAAM,MAAM,kBAAAA,oBAAU,cAAc,KAAK;AAC/C,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,gBAAe;AAAA,IAC/C;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;AAEA,eAAsB,oBAAoB,SAAqE;AAC7G,MAAI;AACF,UAAM,MAAM,MAAM,kBAAAA,oBAAU,oBAAoB,OAAO;AACvD,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,kBAAiB;AAAA,IACjD;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;","names":["adminAuth"]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/sessionTernSecure.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { adminTernSecureAuth as adminAuth } from '../../utils/admin-init';\r\n\r\n\r\nexport interface User {\r\n uid: string;\r\n email: string;\r\n }\r\n\r\nexport interface Session {\r\n user: User | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\nexport async function createSessionCookie(idToken: string) {\r\n try {\r\n const expiresIn = 60 * 60 * 24 * 5 * 1000;\r\n const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });\r\n\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session_cookie', sessionCookie, {\r\n maxAge: expiresIn,\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n path: '/',\r\n });\r\n return { success: true, message: 'Session created' };\r\n } catch (error) {\r\n return { success: false, message: 'Failed to create session' };\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function getServerSessionCookie() {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n\r\n if (!sessionCookie) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie)\r\n return {\r\n token: sessionCookie,\r\n userId: decondeClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\n\r\nexport async function getIdToken() {\r\n const cookieStore = await cookies();\r\n const token = cookieStore.get('_session_token')?.value;\r\n\r\n if (!token) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifyIdToken(token)\r\n return {\r\n token: token,\r\n userId: decodedClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\nexport async function setServerSession(token: string) {\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session', token, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'strict',\r\n maxAge: 60 * 60, // 1 hour\r\n path: '/',\r\n });\r\n }\r\n\r\n export async function verifyTernIDToken(token: string): Promise<{ valid: boolean; uid?: any; error?: any }>{\r\n try {\r\n const res = await adminAuth.verifyIdToken(token);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid token'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n export async function verifyTernSessionCookie(session: string): Promise<{ valid: boolean; uid?: any; error?: any }>{\r\n try {\r\n const res = await adminAuth.verifySessionCookie(session);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid session'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n\r\n\r\n/*\r\n export async function GET(request: NextRequest) {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('session')?.value\r\n \r\n if (!sessionCookie) {\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\r\n } catch (error) {\r\n console.error('Error verifying session cookie:', error)\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n }\r\n\r\n*/"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAwB;AACxB,wBAAiD;AAcjD,eAAsB,oBAAoB,SAAiB;AACzD,MAAI;AACF,UAAM,YAAY,KAAK,KAAK,KAAK,IAAI;AACnC,UAAM,gBAAgB,MAAM,kBAAAA,oBAAU,oBAAoB,SAAS,EAAE,UAAU,CAAC;AAEhF,UAAM,cAAc,UAAM,wBAAQ;AAClC,gBAAY,IAAI,mBAAmB,eAAe;AAAA,MAC9C,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,MACjC,MAAM;AAAA,IACV,CAAC;AACD,WAAO,EAAE,SAAS,MAAM,SAAS,kBAAkB;AAAA,EACvD,SAAS,OAAO;AACZ,WAAO,EAAE,SAAS,OAAO,SAAS,2BAA2B;AAAA,EACjE;AACF;AAIA,eAAsB,yBAAyB;AArC/C;AAsCE,QAAM,cAAc,UAAM,wBAAQ;AAClC,QAAM,iBAAgB,iBAAY,IAAI,iBAAiB,MAAjC,mBAAoC;AAE1D,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,kBAAAA,oBAAU,oBAAoB,aAAa;AACvE,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAGA,eAAsB,aAAa;AA1DnC;AA2DE,QAAM,cAAc,UAAM,wBAAQ;AAClC,QAAM,SAAQ,iBAAY,IAAI,gBAAgB,MAAhC,mBAAmC;AAEjD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,kBAAAA,oBAAU,cAAc,KAAK;AACzD,WAAO;AAAA,MACL;AAAA,MACA,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAEA,eAAsB,iBAAiB,OAAe;AAClD,QAAM,cAAc,UAAM,wBAAQ;AAClC,cAAY,IAAI,YAAY,OAAO;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,KAAK;AAAA;AAAA,IACb,MAAM;AAAA,EACR,CAAC;AACH;AAEA,eAAsB,kBAAkB,OAAmE;AACzG,MAAI;AACF,UAAM,MAAM,MAAM,kBAAAA,oBAAU,cAAc,KAAK;AAC/C,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,gBAAe;AAAA,IAC/C;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;AAEA,eAAsB,wBAAwB,SAAqE;AACjH,MAAI;AACF,UAAM,MAAM,MAAM,kBAAAA,oBAAU,oBAAoB,OAAO;AACvD,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,kBAAiB;AAAA,IACjD;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;","names":["adminAuth"]}
@@ -22,33 +22,26 @@ __export(ternSecureMiddleware_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(ternSecureMiddleware_exports);
24
24
  var import_server = require("next/server");
25
- var import_sessionTernSecure = require("./sessionTernSecure");
26
- const signIn = ["/sign-in"];
27
- const signUp = ["/sign-up"];
28
- const publicRoutes = [...signIn, ...signUp];
29
- async function ternSecureMiddleware(req) {
30
- var _a;
31
- const isPublicRoute = publicRoutes.includes(req.nextUrl.pathname);
32
- const session = (_a = req.cookies.get("_session_cookie")) == null ? void 0 : _a.value;
33
- if (isPublicRoute) {
34
- return import_server.NextResponse.next();
35
- }
36
- if (session) {
37
- const { valid, uid } = await (0, import_sessionTernSecure.verifySessionCookie)(session);
38
- if (!valid) {
39
- const response = import_server.NextResponse.redirect(new URL(signIn[0], req.url));
40
- response.cookies.delete("_session_cookie");
41
- return response;
25
+ var import_auth = require("./auth");
26
+ function ternSecureMiddleware(options = {}) {
27
+ const { publicPaths = [], redirectTo = "/login" } = options;
28
+ return async function middleware(request) {
29
+ const { pathname } = request.nextUrl;
30
+ if (publicPaths.includes(pathname)) {
31
+ return import_server.NextResponse.next();
42
32
  }
43
- const requestHeaders = new Headers(req.headers);
44
- requestHeaders.set("x-uid", uid);
45
- return import_server.NextResponse.next({
46
- request: {
47
- headers: requestHeaders
33
+ try {
34
+ const { userId, token, error } = await (0, import_auth.auth)();
35
+ if (error || !userId || !token) {
36
+ return import_server.NextResponse.redirect(new URL(redirectTo, request.url));
48
37
  }
49
- });
50
- }
51
- return import_server.NextResponse.next();
38
+ const response = import_server.NextResponse.next();
39
+ return response;
40
+ } catch (error) {
41
+ console.error("Error in ternSecureMiddleware:", error);
42
+ return import_server.NextResponse.redirect(new URL(redirectTo, request.url));
43
+ }
44
+ };
52
45
  }
53
46
  // Annotate the CommonJS export names for ESM import in node:
54
47
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/ternSecureMiddleware.ts"],"sourcesContent":["import { NextResponse } from 'next/server'\r\nimport type { NextRequest } from 'next/server'\r\nimport { verifySessionCookie } from './sessionTernSecure'\r\n\r\nconst signIn = ['/sign-in']\r\nconst signUp = ['/sign-up']\r\nconst publicRoutes = [...signIn, ...signUp]\r\n\r\n\r\nexport async function ternSecureMiddleware(req: NextRequest) {\r\n const isPublicRoute = publicRoutes.includes(req.nextUrl.pathname)\r\n\r\n //const token = req.cookies.get('_session_token')?.value\r\n const session = req.cookies.get('_session_cookie')?.value\r\n\r\n\r\n if (isPublicRoute) {\r\n return NextResponse.next();\r\n }\r\n\r\n if(session) {\r\n const {valid, uid} = await verifySessionCookie(session)\r\n\r\n if(!valid) {\r\n const response = NextResponse.redirect(new URL(signIn[0], req.url));\r\n response.cookies.delete('_session_cookie');\r\n return response;\r\n }\r\n\r\n const requestHeaders = new Headers(req.headers);\r\n requestHeaders.set('x-uid', uid);\r\n\r\n return NextResponse.next({\r\n request: {\r\n headers: requestHeaders,\r\n },\r\n });\r\n }\r\n\r\n // Allow all other requests (other subdomains)\r\n return NextResponse.next()\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6B;AAE7B,+BAAoC;AAEpC,MAAM,SAAS,CAAC,UAAU;AAC1B,MAAM,SAAS,CAAC,UAAU;AAC1B,MAAM,eAAe,CAAC,GAAG,QAAQ,GAAG,MAAM;AAG1C,eAAsB,qBAAqB,KAAkB;AAT7D;AAUI,QAAM,gBAAgB,aAAa,SAAS,IAAI,QAAQ,QAAQ;AAGhE,QAAM,WAAU,SAAI,QAAQ,IAAI,iBAAiB,MAAjC,mBAAoC;AAGtD,MAAI,eAAe;AACjB,WAAO,2BAAa,KAAK;AAAA,EAC3B;AAEA,MAAG,SAAS;AACV,UAAM,EAAC,OAAO,IAAG,IAAI,UAAM,8CAAoB,OAAO;AAEtD,QAAG,CAAC,OAAO;AACP,YAAM,WAAW,2BAAa,SAAS,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;AAClE,eAAS,QAAQ,OAAO,iBAAiB;AACzC,aAAO;AAAA,IACX;AAEA,UAAM,iBAAiB,IAAI,QAAQ,IAAI,OAAO;AAC9C,mBAAe,IAAI,SAAS,GAAG;AAE/B,WAAO,2BAAa,KAAK;AAAA,MACvB,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH;AAGA,SAAO,2BAAa,KAAK;AAC3B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/ternSecureMiddleware.ts"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\r\nimport { auth } from './auth';\r\n\r\nexport interface TernSecureMiddlewareOptions {\r\n publicPaths?: string[];\r\n redirectTo?: string;\r\n}\r\n\r\nexport function ternSecureMiddleware(options: TernSecureMiddlewareOptions = {}) {\r\n const { publicPaths = [], redirectTo = '/login' } = options;\r\n\r\n return async function middleware(request: NextRequest) {\r\n const { pathname } = request.nextUrl;\r\n\r\n // Check if the path is public\r\n if (publicPaths.includes(pathname)) {\r\n return NextResponse.next();\r\n }\r\n\r\n try {\r\n const { userId, token, error } = await auth();\r\n\r\n if (error || !userId || !token) {\r\n // If there's no valid session, redirect to login\r\n return NextResponse.redirect(new URL(redirectTo, request.url));\r\n }\r\n\r\n // If there's a valid session, allow the request to proceed\r\n const response = NextResponse.next();\r\n \r\n // Optionally, you can set headers here if needed\r\n // response.headers.set('X-User-ID', userId);\r\n\r\n return response;\r\n } catch (error) {\r\n console.error('Error in ternSecureMiddleware:', error);\r\n return NextResponse.redirect(new URL(redirectTo, request.url));\r\n }\r\n };\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0C;AAC1C,kBAAqB;AAOd,SAAS,qBAAqB,UAAuC,CAAC,GAAG;AAC9E,QAAM,EAAE,cAAc,CAAC,GAAG,aAAa,SAAS,IAAI;AAEpD,SAAO,eAAe,WAAW,SAAsB;AACrD,UAAM,EAAE,SAAS,IAAI,QAAQ;AAG7B,QAAI,YAAY,SAAS,QAAQ,GAAG;AAClC,aAAO,2BAAa,KAAK;AAAA,IAC3B;AAEA,QAAI;AACF,YAAM,EAAE,QAAQ,OAAO,MAAM,IAAI,UAAM,kBAAK;AAE5C,UAAI,SAAS,CAAC,UAAU,CAAC,OAAO;AAE9B,eAAO,2BAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,MAC/D;AAGA,YAAM,WAAW,2BAAa,KAAK;AAKnC,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,kCAAkC,KAAK;AACrD,aAAO,2BAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
@@ -27,7 +27,6 @@ var import_react = require("react");
27
27
  var import_client_init = require("../utils/client-init");
28
28
  var import_auth = require("firebase/auth");
29
29
  var import_TernSecureCtx = require("./TernSecureCtx");
30
- var import_sign_in = require("../components/sign-in");
31
30
  function TernSecureClientProvider({ children, onUserChanged }) {
32
31
  const auth = (0, import_react.useMemo)(() => (0, import_client_init.TernSecureAuth)(), []);
33
32
  const [authState, setAuthState] = (0, import_react.useState)(() => ({
@@ -39,7 +38,6 @@ function TernSecureClientProvider({ children, onUserChanged }) {
39
38
  try {
40
39
  if (!user) {
41
40
  await auth.signOut();
42
- return import_sign_in.SignIn;
43
41
  }
44
42
  if (onUserChanged) {
45
43
  await onUserChanged(user);
@@ -62,13 +60,10 @@ function TernSecureClientProvider({ children, onUserChanged }) {
62
60
  const unsubscribe = (0, import_auth.onAuthStateChanged)(auth, handleAuthStateChange);
63
61
  return () => unsubscribe();
64
62
  }, [auth, handleAuthStateChange]);
65
- const contextValue = (0, import_react.useMemo)(() => ({
66
- ...authState
67
- }), [authState]);
68
63
  if (!authState.isLoaded) {
69
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "aria-live": "polite", "aria-busy": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: "Loading authentication state..." }) }) });
64
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: authState, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "aria-live": "polite", "aria-busy": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: "Loading authentication state..." }) }) });
70
65
  }
71
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: contextValue, children });
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: authState, children });
72
67
  }
73
68
  // Annotate the CommonJS export names for ESM import in node:
74
69
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { TernSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureCtxValue, TernSecureState } from './TernSecureCtx'\r\nimport { SignIn } from '../components/sign-in'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => TernSecureAuth(), []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n user: auth.currentUser,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n return SignIn;\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n user: user,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n user: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={contextValue}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={contextValue}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6DU;AA3DV,mBAAiE;AACjE,yBAA+B;AAC/B,kBAAyC;AACzC,2BAAmE;AACnE,qBAAuB;AAOhB,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,WAAO,sBAAQ,UAAM,mCAAe,GAAG,CAAC,CAAC;AAE/C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAA0B,OAAO;AAAA,IAC/D,MAAM,KAAK;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,4BAAwB,0BAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AACnB,eAAO;AAAA,MACT;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,8BAAU,MAAM;AACd,UAAM,kBAAc,gCAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAEhC,QAAM,mBAAmC,sBAAQ,OAAO;AAAA,IACtD,GAAG;AAAA,EACL,IAAI,CAAC,SAAS,CAAC;AAEf,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,cAC7B,sDAAC,SAAI,aAAU,UAAS,aAAU,QAChC,sDAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,cAC5B,UACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { TernSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureCtxValue, TernSecureState } from './TernSecureCtx'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => TernSecureAuth(), []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n user: auth.currentUser,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n user: user,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n user: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n /*const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);*/\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2DU;AAzDV,mBAAiE;AACjE,yBAA+B;AAC/B,kBAAyC;AACzC,2BAAmE;AAO5D,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,WAAO,sBAAQ,UAAM,mCAAe,GAAG,CAAC,CAAC;AAE/C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAA0B,OAAO;AAAA,IAC/D,MAAM,KAAK;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,4BAAwB,0BAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AAAA,MACrB;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,8BAAU,MAAM;AACd,UAAM,kBAAc,gCAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAMhC,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,WAC7B,sDAAC,SAAI,aAAU,UAAS,aAAU,QAChC,sDAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,WAC5B,UACH;AAEJ;","names":[]}
@@ -0,0 +1,47 @@
1
+ "use server";
2
+ import { cookies } from "next/headers";
3
+ import { verifyTernIDToken, verifyTernSessionCookie } from "./sessionTernSecure";
4
+ async function auth() {
5
+ var _a, _b;
6
+ try {
7
+ const cookieStore = await cookies();
8
+ const sessionCookie = (_a = cookieStore.get("_session_cookie")) == null ? void 0 : _a.value;
9
+ if (sessionCookie) {
10
+ const sessionResult = await verifyTernSessionCookie(sessionCookie);
11
+ if (sessionResult.valid) {
12
+ return {
13
+ userId: sessionResult.uid,
14
+ token: sessionCookie,
15
+ error: null
16
+ };
17
+ }
18
+ }
19
+ const idToken = (_b = cookieStore.get("_session_token")) == null ? void 0 : _b.value;
20
+ if (idToken) {
21
+ const tokenResult = await verifyTernIDToken(idToken);
22
+ if (tokenResult.valid) {
23
+ return {
24
+ userId: tokenResult.uid,
25
+ token: idToken,
26
+ error: null
27
+ };
28
+ }
29
+ }
30
+ return {
31
+ userId: null,
32
+ token: null,
33
+ error: new Error("No valid session or token found")
34
+ };
35
+ } catch (error) {
36
+ console.error("Error in auth function:", error);
37
+ return {
38
+ userId: null,
39
+ token: null,
40
+ error: error instanceof Error ? error : new Error("An unknown error occurred")
41
+ };
42
+ }
43
+ }
44
+ export {
45
+ auth
46
+ };
47
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/app-router/server/auth.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { verifyTernIDToken, verifyTernSessionCookie } from './sessionTernSecure';\r\n\r\nexport interface AuthResult {\r\n userId: string | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\nexport async function auth(): Promise<AuthResult> {\r\n try {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n if (sessionCookie) {\r\n const sessionResult = await verifyTernSessionCookie(sessionCookie);\r\n if (sessionResult.valid) {\r\n return {\r\n userId: sessionResult.uid,\r\n token: sessionCookie,\r\n error: null\r\n };\r\n }\r\n }\r\n\r\n // If session cookie is not present or invalid, try the ID token\r\n const idToken = cookieStore.get('_session_token')?.value;\r\n if (idToken) {\r\n const tokenResult = await verifyTernIDToken(idToken);\r\n if (tokenResult.valid) {\r\n return {\r\n userId: tokenResult.uid,\r\n token: idToken,\r\n error: null\r\n };\r\n }\r\n }\r\n\r\n // If both checks fail, return null values\r\n return {\r\n userId: null,\r\n token: null,\r\n error: new Error('No valid session or token found')\r\n };\r\n } catch (error) {\r\n console.error('Error in auth function:', error);\r\n return {\r\n userId: null,\r\n token: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n };\r\n }\r\n}\r\n\r\n"],"mappings":";AAEA,SAAS,eAAe;AACxB,SAAU,mBAAmB,+BAA+B;AAQ5D,eAAsB,OAA4B;AAXlD;AAYE,MAAI;AACF,UAAM,cAAc,MAAM,QAAQ;AAClC,UAAM,iBAAgB,iBAAY,IAAI,iBAAiB,MAAjC,mBAAoC;AAC1D,QAAI,eAAe;AACjB,YAAM,gBAAgB,MAAM,wBAAwB,aAAa;AACjE,UAAI,cAAc,OAAO;AACvB,eAAO;AAAA,UACL,QAAQ,cAAc;AAAA,UACtB,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAGA,UAAM,WAAU,iBAAY,IAAI,gBAAgB,MAAhC,mBAAmC;AACnD,QAAI,SAAS;AACX,YAAM,cAAc,MAAM,kBAAkB,OAAO;AACnD,UAAI,YAAY,OAAO;AACrB,eAAO;AAAA,UACL,QAAQ,YAAY;AAAA,UACpB,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO,IAAI,MAAM,iCAAiC;AAAA,IACpD;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,2BAA2B,KAAK;AAC9C,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,IAC/E;AAAA,EACF;AACF;","names":[]}
@@ -1,11 +1,11 @@
1
1
  import { adminTernSecureAuth, adminTernSecureDb } from "../../utils/admin-init";
2
2
  import { ternSecureMiddleware } from "./ternSecureMiddleware";
3
- import { verifySessionCookie, createSessionCookie } from "./sessionTernSecure";
3
+ import { verifyTernSessionCookie, createSessionCookie } from "./sessionTernSecure";
4
4
  export {
5
5
  adminTernSecureAuth,
6
6
  adminTernSecureDb,
7
7
  createSessionCookie,
8
8
  ternSecureMiddleware,
9
- verifySessionCookie
9
+ verifyTernSessionCookie
10
10
  };
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifySessionCookie, createSessionCookie } from './sessionTernSecure'"],"mappings":"AAAA,SAAS,qBAAqB,yBAAyB;AACvD,SAAS,4BAA4B;AACrC,SAAS,qBAAqB,2BAA2B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure'"],"mappings":"AAAA,SAAS,qBAAqB,yBAAyB;AACvD,SAAS,4BAA4B;AACrC,SAAS,yBAAyB,2BAA2B;","names":[]}
@@ -64,7 +64,7 @@ async function setServerSession(token) {
64
64
  path: "/"
65
65
  });
66
66
  }
67
- async function verifyIDToken(token) {
67
+ async function verifyTernIDToken(token) {
68
68
  try {
69
69
  const res = await adminAuth.verifyIdToken(token);
70
70
  if (res) {
@@ -76,7 +76,7 @@ async function verifyIDToken(token) {
76
76
  return { error, valid: false };
77
77
  }
78
78
  }
79
- async function verifySessionCookie(session) {
79
+ async function verifyTernSessionCookie(session) {
80
80
  try {
81
81
  const res = await adminAuth.verifySessionCookie(session);
82
82
  if (res) {
@@ -93,7 +93,7 @@ export {
93
93
  getIdToken,
94
94
  getServerSessionCookie,
95
95
  setServerSession,
96
- verifyIDToken,
97
- verifySessionCookie
96
+ verifyTernIDToken,
97
+ verifyTernSessionCookie
98
98
  };
99
99
  //# sourceMappingURL=sessionTernSecure.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/sessionTernSecure.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { adminTernSecureAuth as adminAuth } from '../../utils/admin-init';\r\n\r\n\r\nexport interface User {\r\n uid: string;\r\n email: string;\r\n }\r\n\r\nexport interface Session {\r\n user: User | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\nexport async function createSessionCookie(idToken: string) {\r\n try {\r\n const expiresIn = 60 * 60 * 24 * 5 * 1000;\r\n const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });\r\n\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session_cookie', sessionCookie, {\r\n maxAge: expiresIn,\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n path: '/',\r\n });\r\n return { success: true, message: 'Session created' };\r\n } catch (error) {\r\n return { success: false, message: 'Failed to create session' };\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function getServerSessionCookie() {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n\r\n if (!sessionCookie) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie)\r\n return {\r\n token: sessionCookie,\r\n userId: decondeClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\n\r\nexport async function getIdToken() {\r\n const cookieStore = await cookies();\r\n const token = cookieStore.get('_session_token')?.value;\r\n\r\n if (!token) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifyIdToken(token)\r\n return {\r\n token: token,\r\n userId: decodedClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\nexport async function setServerSession(token: string) {\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session', token, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'strict',\r\n maxAge: 60 * 60, // 1 hour\r\n path: '/',\r\n });\r\n }\r\n\r\n export async function verifyIDToken(token: string){\r\n try {\r\n const res = await adminAuth.verifyIdToken(token);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid token'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n export async function verifySessionCookie(session: string): Promise<{ valid: boolean; uid?: any; error?: any }>{\r\n try {\r\n const res = await adminAuth.verifySessionCookie(session);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid session'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n\r\n\r\n/*\r\n export async function GET(request: NextRequest) {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('session')?.value\r\n \r\n if (!sessionCookie) {\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\r\n } catch (error) {\r\n console.error('Error verifying session cookie:', error)\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n }\r\n\r\n*/"],"mappings":";AAEA,SAAS,eAAe;AACxB,SAAS,uBAAuB,iBAAiB;AAcjD,eAAsB,oBAAoB,SAAiB;AACzD,MAAI;AACF,UAAM,YAAY,KAAK,KAAK,KAAK,IAAI;AACnC,UAAM,gBAAgB,MAAM,UAAU,oBAAoB,SAAS,EAAE,UAAU,CAAC;AAEhF,UAAM,cAAc,MAAM,QAAQ;AAClC,gBAAY,IAAI,mBAAmB,eAAe;AAAA,MAC9C,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,MACjC,MAAM;AAAA,IACV,CAAC;AACD,WAAO,EAAE,SAAS,MAAM,SAAS,kBAAkB;AAAA,EACvD,SAAS,OAAO;AACZ,WAAO,EAAE,SAAS,OAAO,SAAS,2BAA2B;AAAA,EACjE;AACF;AAIA,eAAsB,yBAAyB;AArC/C;AAsCE,QAAM,cAAc,MAAM,QAAQ;AAClC,QAAM,iBAAgB,iBAAY,IAAI,iBAAiB,MAAjC,mBAAoC;AAE1D,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,oBAAoB,aAAa;AACvE,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAGA,eAAsB,aAAa;AA1DnC;AA2DE,QAAM,cAAc,MAAM,QAAQ;AAClC,QAAM,SAAQ,iBAAY,IAAI,gBAAgB,MAAhC,mBAAmC;AAEjD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,cAAc,KAAK;AACzD,WAAO;AAAA,MACL;AAAA,MACA,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAEA,eAAsB,iBAAiB,OAAe;AAClD,QAAM,cAAc,MAAM,QAAQ;AAClC,cAAY,IAAI,YAAY,OAAO;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,KAAK;AAAA;AAAA,IACb,MAAM;AAAA,EACR,CAAC;AACH;AAEA,eAAsB,cAAc,OAAc;AAChD,MAAI;AACF,UAAM,MAAM,MAAM,UAAU,cAAc,KAAK;AAC/C,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,gBAAe;AAAA,IAC/C;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;AAEA,eAAsB,oBAAoB,SAAqE;AAC7G,MAAI;AACF,UAAM,MAAM,MAAM,UAAU,oBAAoB,OAAO;AACvD,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,kBAAiB;AAAA,IACjD;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/sessionTernSecure.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { adminTernSecureAuth as adminAuth } from '../../utils/admin-init';\r\n\r\n\r\nexport interface User {\r\n uid: string;\r\n email: string;\r\n }\r\n\r\nexport interface Session {\r\n user: User | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\nexport async function createSessionCookie(idToken: string) {\r\n try {\r\n const expiresIn = 60 * 60 * 24 * 5 * 1000;\r\n const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });\r\n\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session_cookie', sessionCookie, {\r\n maxAge: expiresIn,\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n path: '/',\r\n });\r\n return { success: true, message: 'Session created' };\r\n } catch (error) {\r\n return { success: false, message: 'Failed to create session' };\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function getServerSessionCookie() {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n\r\n if (!sessionCookie) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie)\r\n return {\r\n token: sessionCookie,\r\n userId: decondeClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\n\r\nexport async function getIdToken() {\r\n const cookieStore = await cookies();\r\n const token = cookieStore.get('_session_token')?.value;\r\n\r\n if (!token) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifyIdToken(token)\r\n return {\r\n token: token,\r\n userId: decodedClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\nexport async function setServerSession(token: string) {\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session', token, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'strict',\r\n maxAge: 60 * 60, // 1 hour\r\n path: '/',\r\n });\r\n }\r\n\r\n export async function verifyTernIDToken(token: string): Promise<{ valid: boolean; uid?: any; error?: any }>{\r\n try {\r\n const res = await adminAuth.verifyIdToken(token);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid token'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n export async function verifyTernSessionCookie(session: string): Promise<{ valid: boolean; uid?: any; error?: any }>{\r\n try {\r\n const res = await adminAuth.verifySessionCookie(session);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid session'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n\r\n\r\n/*\r\n export async function GET(request: NextRequest) {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('session')?.value\r\n \r\n if (!sessionCookie) {\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\r\n } catch (error) {\r\n console.error('Error verifying session cookie:', error)\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n }\r\n\r\n*/"],"mappings":";AAEA,SAAS,eAAe;AACxB,SAAS,uBAAuB,iBAAiB;AAcjD,eAAsB,oBAAoB,SAAiB;AACzD,MAAI;AACF,UAAM,YAAY,KAAK,KAAK,KAAK,IAAI;AACnC,UAAM,gBAAgB,MAAM,UAAU,oBAAoB,SAAS,EAAE,UAAU,CAAC;AAEhF,UAAM,cAAc,MAAM,QAAQ;AAClC,gBAAY,IAAI,mBAAmB,eAAe;AAAA,MAC9C,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,MACjC,MAAM;AAAA,IACV,CAAC;AACD,WAAO,EAAE,SAAS,MAAM,SAAS,kBAAkB;AAAA,EACvD,SAAS,OAAO;AACZ,WAAO,EAAE,SAAS,OAAO,SAAS,2BAA2B;AAAA,EACjE;AACF;AAIA,eAAsB,yBAAyB;AArC/C;AAsCE,QAAM,cAAc,MAAM,QAAQ;AAClC,QAAM,iBAAgB,iBAAY,IAAI,iBAAiB,MAAjC,mBAAoC;AAE1D,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,oBAAoB,aAAa;AACvE,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAGA,eAAsB,aAAa;AA1DnC;AA2DE,QAAM,cAAc,MAAM,QAAQ;AAClC,QAAM,SAAQ,iBAAY,IAAI,gBAAgB,MAAhC,mBAAmC;AAEjD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,cAAc,KAAK;AACzD,WAAO;AAAA,MACL;AAAA,MACA,QAAQ,cAAc;AAAA,IACxB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAEA,eAAsB,iBAAiB,OAAe;AAClD,QAAM,cAAc,MAAM,QAAQ;AAClC,cAAY,IAAI,YAAY,OAAO;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,QAAQ,IAAI,aAAa;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ,KAAK;AAAA;AAAA,IACb,MAAM;AAAA,EACR,CAAC;AACH;AAEA,eAAsB,kBAAkB,OAAmE;AACzG,MAAI;AACF,UAAM,MAAM,MAAM,UAAU,cAAc,KAAK;AAC/C,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,gBAAe;AAAA,IAC/C;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;AAEA,eAAsB,wBAAwB,SAAqE;AACjH,MAAI;AACF,UAAM,MAAM,MAAM,UAAU,oBAAoB,OAAO;AACvD,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IACrC,OAAO;AACL,aAAO,EAAE,OAAO,OAAO,OAAO,kBAAiB;AAAA,IACjD;AAAA,EACF,SAAS,OAAO;AACd,WAAO,EAAC,OAAc,OAAO,MAAK;AAAA,EACpC;AACF;","names":[]}
@@ -1,31 +1,24 @@
1
1
  import { NextResponse } from "next/server";
2
- import { verifySessionCookie } from "./sessionTernSecure";
3
- const signIn = ["/sign-in"];
4
- const signUp = ["/sign-up"];
5
- const publicRoutes = [...signIn, ...signUp];
6
- async function ternSecureMiddleware(req) {
7
- var _a;
8
- const isPublicRoute = publicRoutes.includes(req.nextUrl.pathname);
9
- const session = (_a = req.cookies.get("_session_cookie")) == null ? void 0 : _a.value;
10
- if (isPublicRoute) {
11
- return NextResponse.next();
12
- }
13
- if (session) {
14
- const { valid, uid } = await verifySessionCookie(session);
15
- if (!valid) {
16
- const response = NextResponse.redirect(new URL(signIn[0], req.url));
17
- response.cookies.delete("_session_cookie");
18
- return response;
2
+ import { auth } from "./auth";
3
+ function ternSecureMiddleware(options = {}) {
4
+ const { publicPaths = [], redirectTo = "/login" } = options;
5
+ return async function middleware(request) {
6
+ const { pathname } = request.nextUrl;
7
+ if (publicPaths.includes(pathname)) {
8
+ return NextResponse.next();
19
9
  }
20
- const requestHeaders = new Headers(req.headers);
21
- requestHeaders.set("x-uid", uid);
22
- return NextResponse.next({
23
- request: {
24
- headers: requestHeaders
10
+ try {
11
+ const { userId, token, error } = await auth();
12
+ if (error || !userId || !token) {
13
+ return NextResponse.redirect(new URL(redirectTo, request.url));
25
14
  }
26
- });
27
- }
28
- return NextResponse.next();
15
+ const response = NextResponse.next();
16
+ return response;
17
+ } catch (error) {
18
+ console.error("Error in ternSecureMiddleware:", error);
19
+ return NextResponse.redirect(new URL(redirectTo, request.url));
20
+ }
21
+ };
29
22
  }
30
23
  export {
31
24
  ternSecureMiddleware
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/ternSecureMiddleware.ts"],"sourcesContent":["import { NextResponse } from 'next/server'\r\nimport type { NextRequest } from 'next/server'\r\nimport { verifySessionCookie } from './sessionTernSecure'\r\n\r\nconst signIn = ['/sign-in']\r\nconst signUp = ['/sign-up']\r\nconst publicRoutes = [...signIn, ...signUp]\r\n\r\n\r\nexport async function ternSecureMiddleware(req: NextRequest) {\r\n const isPublicRoute = publicRoutes.includes(req.nextUrl.pathname)\r\n\r\n //const token = req.cookies.get('_session_token')?.value\r\n const session = req.cookies.get('_session_cookie')?.value\r\n\r\n\r\n if (isPublicRoute) {\r\n return NextResponse.next();\r\n }\r\n\r\n if(session) {\r\n const {valid, uid} = await verifySessionCookie(session)\r\n\r\n if(!valid) {\r\n const response = NextResponse.redirect(new URL(signIn[0], req.url));\r\n response.cookies.delete('_session_cookie');\r\n return response;\r\n }\r\n\r\n const requestHeaders = new Headers(req.headers);\r\n requestHeaders.set('x-uid', uid);\r\n\r\n return NextResponse.next({\r\n request: {\r\n headers: requestHeaders,\r\n },\r\n });\r\n }\r\n\r\n // Allow all other requests (other subdomains)\r\n return NextResponse.next()\r\n}\r\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,2BAA2B;AAEpC,MAAM,SAAS,CAAC,UAAU;AAC1B,MAAM,SAAS,CAAC,UAAU;AAC1B,MAAM,eAAe,CAAC,GAAG,QAAQ,GAAG,MAAM;AAG1C,eAAsB,qBAAqB,KAAkB;AAT7D;AAUI,QAAM,gBAAgB,aAAa,SAAS,IAAI,QAAQ,QAAQ;AAGhE,QAAM,WAAU,SAAI,QAAQ,IAAI,iBAAiB,MAAjC,mBAAoC;AAGtD,MAAI,eAAe;AACjB,WAAO,aAAa,KAAK;AAAA,EAC3B;AAEA,MAAG,SAAS;AACV,UAAM,EAAC,OAAO,IAAG,IAAI,MAAM,oBAAoB,OAAO;AAEtD,QAAG,CAAC,OAAO;AACP,YAAM,WAAW,aAAa,SAAS,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;AAClE,eAAS,QAAQ,OAAO,iBAAiB;AACzC,aAAO;AAAA,IACX;AAEA,UAAM,iBAAiB,IAAI,QAAQ,IAAI,OAAO;AAC9C,mBAAe,IAAI,SAAS,GAAG;AAE/B,WAAO,aAAa,KAAK;AAAA,MACvB,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH;AAGA,SAAO,aAAa,KAAK;AAC3B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/ternSecureMiddleware.ts"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\r\nimport { auth } from './auth';\r\n\r\nexport interface TernSecureMiddlewareOptions {\r\n publicPaths?: string[];\r\n redirectTo?: string;\r\n}\r\n\r\nexport function ternSecureMiddleware(options: TernSecureMiddlewareOptions = {}) {\r\n const { publicPaths = [], redirectTo = '/login' } = options;\r\n\r\n return async function middleware(request: NextRequest) {\r\n const { pathname } = request.nextUrl;\r\n\r\n // Check if the path is public\r\n if (publicPaths.includes(pathname)) {\r\n return NextResponse.next();\r\n }\r\n\r\n try {\r\n const { userId, token, error } = await auth();\r\n\r\n if (error || !userId || !token) {\r\n // If there's no valid session, redirect to login\r\n return NextResponse.redirect(new URL(redirectTo, request.url));\r\n }\r\n\r\n // If there's a valid session, allow the request to proceed\r\n const response = NextResponse.next();\r\n \r\n // Optionally, you can set headers here if needed\r\n // response.headers.set('X-User-ID', userId);\r\n\r\n return response;\r\n } catch (error) {\r\n console.error('Error in ternSecureMiddleware:', error);\r\n return NextResponse.redirect(new URL(redirectTo, request.url));\r\n }\r\n };\r\n}\r\n\r\n"],"mappings":"AAAA,SAAsB,oBAAoB;AAC1C,SAAS,YAAY;AAOd,SAAS,qBAAqB,UAAuC,CAAC,GAAG;AAC9E,QAAM,EAAE,cAAc,CAAC,GAAG,aAAa,SAAS,IAAI;AAEpD,SAAO,eAAe,WAAW,SAAsB;AACrD,UAAM,EAAE,SAAS,IAAI,QAAQ;AAG7B,QAAI,YAAY,SAAS,QAAQ,GAAG;AAClC,aAAO,aAAa,KAAK;AAAA,IAC3B;AAEA,QAAI;AACF,YAAM,EAAE,QAAQ,OAAO,MAAM,IAAI,MAAM,KAAK;AAE5C,UAAI,SAAS,CAAC,UAAU,CAAC,OAAO;AAE9B,eAAO,aAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,MAC/D;AAGA,YAAM,WAAW,aAAa,KAAK;AAKnC,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,kCAAkC,KAAK;AACrD,aAAO,aAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
@@ -4,7 +4,6 @@ import { useState, useEffect, useMemo, useCallback } from "react";
4
4
  import { TernSecureAuth } from "../utils/client-init";
5
5
  import { onAuthStateChanged } from "firebase/auth";
6
6
  import { TernSecureCtx } from "./TernSecureCtx";
7
- import { SignIn } from "../components/sign-in";
8
7
  function TernSecureClientProvider({ children, onUserChanged }) {
9
8
  const auth = useMemo(() => TernSecureAuth(), []);
10
9
  const [authState, setAuthState] = useState(() => ({
@@ -16,7 +15,6 @@ function TernSecureClientProvider({ children, onUserChanged }) {
16
15
  try {
17
16
  if (!user) {
18
17
  await auth.signOut();
19
- return SignIn;
20
18
  }
21
19
  if (onUserChanged) {
22
20
  await onUserChanged(user);
@@ -39,13 +37,10 @@ function TernSecureClientProvider({ children, onUserChanged }) {
39
37
  const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);
40
38
  return () => unsubscribe();
41
39
  }, [auth, handleAuthStateChange]);
42
- const contextValue = useMemo(() => ({
43
- ...authState
44
- }), [authState]);
45
40
  if (!authState.isLoaded) {
46
- return /* @__PURE__ */ jsx(TernSecureCtx.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("div", { "aria-live": "polite", "aria-busy": "true", children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading authentication state..." }) }) });
41
+ return /* @__PURE__ */ jsx(TernSecureCtx.Provider, { value: authState, children: /* @__PURE__ */ jsx("div", { "aria-live": "polite", "aria-busy": "true", children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading authentication state..." }) }) });
47
42
  }
48
- return /* @__PURE__ */ jsx(TernSecureCtx.Provider, { value: contextValue, children });
43
+ return /* @__PURE__ */ jsx(TernSecureCtx.Provider, { value: authState, children });
49
44
  }
50
45
  export {
51
46
  TernSecureClientProvider
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { TernSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureCtxValue, TernSecureState } from './TernSecureCtx'\r\nimport { SignIn } from '../components/sign-in'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => TernSecureAuth(), []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n user: auth.currentUser,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n return SignIn;\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n user: user,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n user: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={contextValue}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={contextValue}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";AA6DU;AA3DV,SAAgB,UAAU,WAAW,SAAS,mBAAmB;AACjE,SAAS,sBAAsB;AAC/B,SAAS,0BAAgC;AACzC,SAAS,qBAA0D;AACnE,SAAS,cAAc;AAOhB,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,OAAO,QAAQ,MAAM,eAAe,GAAG,CAAC,CAAC;AAE/C,QAAM,CAAC,WAAW,YAAY,IAAI,SAA0B,OAAO;AAAA,IAC/D,MAAM,KAAK;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,wBAAwB,YAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AACnB,eAAO;AAAA,MACT;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,YAAU,MAAM;AACd,UAAM,cAAc,mBAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAEhC,QAAM,eAAmC,QAAQ,OAAO;AAAA,IACtD,GAAG;AAAA,EACL,IAAI,CAAC,SAAS,CAAC;AAEf,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,cAC7B,8BAAC,SAAI,aAAU,UAAS,aAAU,QAChC,8BAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,cAC5B,UACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { TernSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureCtxValue, TernSecureState } from './TernSecureCtx'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => TernSecureAuth(), []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n user: auth.currentUser,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n user: user,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n user: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n /*const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);*/\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";AA2DU;AAzDV,SAAgB,UAAU,WAAW,SAAS,mBAAmB;AACjE,SAAS,sBAAsB;AAC/B,SAAS,0BAAgC;AACzC,SAAS,qBAA0D;AAO5D,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,OAAO,QAAQ,MAAM,eAAe,GAAG,CAAC,CAAC;AAE/C,QAAM,CAAC,WAAW,YAAY,IAAI,SAA0B,OAAO;AAAA,IAC/D,MAAM,KAAK;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,wBAAwB,YAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AAAA,MACrB;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,YAAU,MAAM;AACd,UAAM,cAAc,mBAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAMhC,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,WAC7B,8BAAC,SAAI,aAAU,UAAS,aAAU,QAChC,8BAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,WAC5B,UACH;AAEJ;","names":[]}
@@ -0,0 +1,7 @@
1
+ export interface AuthResult {
2
+ userId: string | null;
3
+ token: string | null;
4
+ error: Error | null;
5
+ }
6
+ export declare function auth(): Promise<AuthResult>;
7
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/auth.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CA0ChD"}
@@ -1,4 +1,4 @@
1
1
  export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init';
2
2
  export { ternSecureMiddleware } from './ternSecureMiddleware';
3
- export { verifySessionCookie, createSessionCookie } from './sessionTernSecure';
3
+ export { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -20,16 +20,12 @@ export declare function getIdToken(): Promise<{
20
20
  userId: string;
21
21
  }>;
22
22
  export declare function setServerSession(token: string): Promise<void>;
23
- export declare function verifyIDToken(token: string): Promise<{
23
+ export declare function verifyTernIDToken(token: string): Promise<{
24
24
  valid: boolean;
25
- uid: string;
26
- error?: undefined;
27
- } | {
28
- error: unknown;
29
- valid: boolean;
30
- uid?: undefined;
25
+ uid?: any;
26
+ error?: any;
31
27
  }>;
32
- export declare function verifySessionCookie(session: string): Promise<{
28
+ export declare function verifyTernSessionCookie(session: string): Promise<{
33
29
  valid: boolean;
34
30
  uid?: any;
35
31
  error?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"sessionTernSecure.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/sessionTernSecure.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAEH,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACvB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM;;;GAgBxD;AAID,wBAAsB,sBAAsB;;;GAkB3C;AAGD,wBAAsB,UAAU;;;GAkB/B;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,iBASjD;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM;;;;;;;;GAWhD;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,CAW9G"}
1
+ {"version":3,"file":"sessionTernSecure.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/sessionTernSecure.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAEH,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACvB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM;;;GAgBxD;AAID,wBAAsB,sBAAsB;;;GAkB3C;AAGD,wBAAsB,UAAU;;;GAkB/B;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,iBASjD;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,CAW1G;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,CAWlH"}
@@ -1,4 +1,7 @@
1
- import { NextResponse } from 'next/server';
2
- import type { NextRequest } from 'next/server';
3
- export declare function ternSecureMiddleware(req: NextRequest): Promise<NextResponse<unknown>>;
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ export interface TernSecureMiddlewareOptions {
3
+ publicPaths?: string[];
4
+ redirectTo?: string;
5
+ }
6
+ export declare function ternSecureMiddleware(options?: TernSecureMiddlewareOptions): (request: NextRequest) => Promise<NextResponse<unknown>>;
4
7
  //# sourceMappingURL=ternSecureMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ternSecureMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/ternSecureMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAQ9C,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,WAAW,kCAgC1D"}
1
+ {"version":3,"file":"ternSecureMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/ternSecureMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,aAGlC,WAAW,oCA4BtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"TernSecureClientProvider.d.ts","sourceRoot":"","sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAExE,OAAO,EAAsB,IAAI,EAAE,MAAM,eAAe,CAAA;AAIxD,UAAU,6BAA6B;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,wBAAgB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,6BAA6B,2CA2DlG"}
1
+ {"version":3,"file":"TernSecureClientProvider.d.ts","sourceRoot":"","sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAExE,OAAO,EAAsB,IAAI,EAAE,MAAM,eAAe,CAAA;AAGxD,UAAU,6BAA6B;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,wBAAgB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,6BAA6B,2CA0DlG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "3.2.18",
3
+ "version": "3.2.20",
4
4
  "packageManager": "npm@10.9.0",
5
5
  "publishConfig": {
6
6
  "access": "public"