@take-out/better-auth-utils 0.4.0 → 0.4.1

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.
@@ -44,7 +44,9 @@ async function getAuthDataFromRequest(authServer, req, tokenOptions) {
44
44
  email: session.user.email || void 0,
45
45
  role: session.user.role === "admin" ? "admin" : void 0
46
46
  };
47
- } catch {}
47
+ } catch (err) {
48
+ console.warn("Error validating session", err);
49
+ }
48
50
  const jwtToken = authHeader?.replace("Bearer ", "");
49
51
  if (jwtToken) try {
50
52
  const payload = await validateToken(jwtToken, tokenOptions),
@@ -145,7 +145,9 @@ async function getAuthDataFromRequest(authServer, req, tokenOptions) {
145
145
  email: session.user.email || void 0,
146
146
  role: session.user.role === "admin" ? "admin" : void 0
147
147
  };
148
- } catch {}
148
+ } catch (err) {
149
+ console.warn("Error validating session", err);
150
+ }
149
151
  var jwtToken = authHeader?.replace("Bearer ", "");
150
152
  if (jwtToken) try {
151
153
  var payload = await validateToken(jwtToken, tokenOptions),
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","server_exports","__export","InvalidTokenError","NotAuthenticatedError","getAuthDataFromRequest","isValidJWT","validateToken","module","exports","import_jose","require","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","o","Object","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","writable","configurable","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","obj","_wrap_native_super","_cache","Map"],"sources":["../../src/server.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","server_exports","__export","InvalidTokenError","NotAuthenticatedError","getAuthDataFromRequest","isValidJWT","validateToken","module","exports","import_jose","require","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","o","Object","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","writable","configurable","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","obj","_wrap_native_super","_cache","Map"],"sources":["../../src/server.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,9 @@ async function getAuthDataFromRequest(authServer, req, tokenOptions) {
15
15
  email: session.user.email || void 0,
16
16
  role: session.user.role === "admin" ? "admin" : void 0
17
17
  };
18
- } catch {}
18
+ } catch (err) {
19
+ console.warn("Error validating session", err);
20
+ }
19
21
  const jwtToken = authHeader?.replace("Bearer ", "");
20
22
  if (jwtToken) try {
21
23
  const payload = await validateToken(jwtToken, tokenOptions),
@@ -1 +1 @@
1
- {"version":3,"names":["createRemoteJWKSet","jwtVerify","NotAuthenticatedError","Error","InvalidTokenError","getAuthDataFromRequest","authServer","req","tokenOptions","authHeader","headers","get","cookie","split","newHeaders","Headers","set","session","api","getSession","user","id","email","role","jwtToken","replace","payload","validateToken","userId","sub","err","token","options","baseUrl","process","env","ONE_SERVER_URL","forceIssuer","FORCE_ISSUER","jwksPath","normalizedBaseUrl","removeTrailingSlash","url","JWKS","URL","verifyOptions","issuer","audience","error","isValidJWT","str"],"sources":["../../src/server.ts"],"sourcesContent":[null],"mappings":"AAMA,SAASA,kBAAA,EAAoBC,SAAA,QAAkC;AAiBxD,MAAMC,qBAAA,SAA8BC,KAAA,CAAM;AAC1C,MAAMC,iBAAA,SAA0BD,KAAA,CAAM;AAiB7C,eAAsBE,uBACpBC,UAAA,EACAC,GAAA,EACAC,YAAA,EAC0B;EAI1B,MAAMC,UAAA,GAAaF,GAAA,CAAIG,OAAA,CAAQC,GAAA,CAAI,eAAe;IAC5CC,MAAA,GAASH,UAAA,EAAYI,KAAA,CAAM,SAAS,EAAE,CAAC;IAEvCC,UAAA,GAAa,IAAIC,OAAA,CAAQR,GAAA,CAAIG,OAAO;EACtCE,MAAA,IACFE,UAAA,CAAWE,GAAA,CAAI,UAAUJ,MAAM;EAIjC,IAAI;IACF,MAAMK,OAAA,GAAU,MAAMX,UAAA,CAAWY,GAAA,CAAIC,UAAA,CAAW;MAAET,OAAA,EAASI;IAAW,CAAC;IACvE,IAAIG,OAAA,EAASG,IAAA,EACX,OAAO;MACLC,EAAA,EAAIJ,OAAA,CAAQG,IAAA,CAAKC,EAAA;MACjBC,KAAA,EAAOL,OAAA,CAAQG,IAAA,CAAKE,KAAA,IAAS;MAC7BC,IAAA,EAAMN,OAAA,CAAQG,IAAA,CAAKG,IAAA,KAAS,UAAU,UAAU;IAClD;EAEJ,QAAQ,CAER;EAIA,MAAMC,QAAA,GAAWf,UAAA,EAAYgB,OAAA,CAAQ,WAAW,EAAE;EAElD,IAAID,QAAA,EACF,IAAI;IACF,MAAME,OAAA,GAAU,MAAMC,aAAA,CAAcH,QAAA,EAAUhB,YAAY;MACpDoB,MAAA,GAAUF,OAAA,EAAiBL,EAAA,IAAMK,OAAA,EAASG,GAAA;IAChD,IAAID,MAAA,EACF,OAAO;MACLP,EAAA,EAAIO,MAAA;MACJN,KAAA,EAAQI,OAAA,CAAgBJ,KAAA;MACxBC,IAAA,EAAOG,OAAA,CAAgBH,IAAA,KAAS,UAAU,UAAU;IACtD;EAEJ,SAASO,GAAA,EAAK;IACZ,IAAI,EAAEA,GAAA,YAAe1B,iBAAA,GACnB,MAAM0B,GAAA;EAEV;EAGF,OAAO;AACT;AAIA,eAAsBH,cACpBI,KAAA,EACAC,OAAA,EACqB;EACrB,MAAM;IACJC,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,cAAA;IACtBC,WAAA,GAAcH,OAAA,CAAQC,GAAA,CAAIG,YAAA,IAAgB;IAC1CC,QAAA,GAAW;EACb,IAAIP,OAAA,IAAW,CAAC;EAEhB,IAAI,CAACC,OAAA,EACH,MAAM,IAAI9B,KAAA,CAAM,aAAa;EAG/B,MAAMqC,iBAAA,GAAoBC,mBAAA,CAAoBR,OAAO;IAC/CS,GAAA,GAAM,GAAGL,WAAA,IAAeG,iBAAiB,GAAGD,QAAQ;IAGpDI,IAAA,GAAO3C,kBAAA,CAAmB,IAAI4C,GAAA,CAAIF,GAAG,CAAC;EAE5C,IAAI;IACF,MAAMG,aAAA,GAAgBR,WAAA,GAClB,CAAC,IACD;QACES,MAAA,EAAQN,iBAAA;QACRO,QAAA,EAAUP;MACZ;MAEE;QAAEd;MAAQ,IAAI,MAAMzB,SAAA,CAAU8B,KAAA,EAAOY,IAAA,EAAME,aAAa;IAE9D,OAAOnB,OAAA;EACT,SAASsB,KAAA,EAAO;IACd,MAAM,IAAI5C,iBAAA,CAAkB,GAAG4C,KAAK,EAAE;EACxC;AACF;AAEA,eAAsBC,WACpBlB,KAAA,EACAC,OAAA,EACkB;EAClB,IAAI;IACF,aAAML,aAAA,CAAcI,KAAA,EAAOC,OAAO,GAC3B;EACT,QAAQ;IACN,OAAO;EACT;AACF;AAEA,SAASS,oBAAoBS,GAAA,EAAa;EACxC,OAAOA,GAAA,CAAIzB,OAAA,CAAQ,OAAO,EAAE;AAC9B","ignoreList":[]}
1
+ {"version":3,"names":["createRemoteJWKSet","jwtVerify","NotAuthenticatedError","Error","InvalidTokenError","getAuthDataFromRequest","authServer","req","tokenOptions","authHeader","headers","get","cookie","split","newHeaders","Headers","set","session","api","getSession","user","id","email","role","err","console","warn","jwtToken","replace","payload","validateToken","userId","sub","token","options","baseUrl","process","env","ONE_SERVER_URL","forceIssuer","FORCE_ISSUER","jwksPath","normalizedBaseUrl","removeTrailingSlash","url","JWKS","URL","verifyOptions","issuer","audience","error","isValidJWT","str"],"sources":["../../src/server.ts"],"sourcesContent":[null],"mappings":"AAMA,SAASA,kBAAA,EAAoBC,SAAA,QAAkC;AAiBxD,MAAMC,qBAAA,SAA8BC,KAAA,CAAM;AAC1C,MAAMC,iBAAA,SAA0BD,KAAA,CAAM;AAiB7C,eAAsBE,uBACpBC,UAAA,EACAC,GAAA,EACAC,YAAA,EAC0B;EAI1B,MAAMC,UAAA,GAAaF,GAAA,CAAIG,OAAA,CAAQC,GAAA,CAAI,eAAe;IAC5CC,MAAA,GAASH,UAAA,EAAYI,KAAA,CAAM,SAAS,EAAE,CAAC;IAEvCC,UAAA,GAAa,IAAIC,OAAA,CAAQR,GAAA,CAAIG,OAAO;EACtCE,MAAA,IACFE,UAAA,CAAWE,GAAA,CAAI,UAAUJ,MAAM;EAIjC,IAAI;IACF,MAAMK,OAAA,GAAU,MAAMX,UAAA,CAAWY,GAAA,CAAIC,UAAA,CAAW;MAAET,OAAA,EAASI;IAAW,CAAC;IACvE,IAAIG,OAAA,EAASG,IAAA,EACX,OAAO;MACLC,EAAA,EAAIJ,OAAA,CAAQG,IAAA,CAAKC,EAAA;MACjBC,KAAA,EAAOL,OAAA,CAAQG,IAAA,CAAKE,KAAA,IAAS;MAC7BC,IAAA,EAAMN,OAAA,CAAQG,IAAA,CAAKG,IAAA,KAAS,UAAU,UAAU;IAClD;EAEJ,SAASC,GAAA,EAAK;IACZC,OAAA,CAAQC,IAAA,CAAK,4BAA4BF,GAAG;EAE9C;EAIA,MAAMG,QAAA,GAAWlB,UAAA,EAAYmB,OAAA,CAAQ,WAAW,EAAE;EAElD,IAAID,QAAA,EACF,IAAI;IACF,MAAME,OAAA,GAAU,MAAMC,aAAA,CAAcH,QAAA,EAAUnB,YAAY;MACpDuB,MAAA,GAAUF,OAAA,EAAiBR,EAAA,IAAMQ,OAAA,EAASG,GAAA;IAChD,IAAID,MAAA,EACF,OAAO;MACLV,EAAA,EAAIU,MAAA;MACJT,KAAA,EAAQO,OAAA,CAAgBP,KAAA;MACxBC,IAAA,EAAOM,OAAA,CAAgBN,IAAA,KAAS,UAAU,UAAU;IACtD;EAEJ,SAASC,GAAA,EAAK;IACZ,IAAI,EAAEA,GAAA,YAAepB,iBAAA,GACnB,MAAMoB,GAAA;EAEV;EAGF,OAAO;AACT;AAIA,eAAsBM,cACpBG,KAAA,EACAC,OAAA,EACqB;EACrB,MAAM;IACJC,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,cAAA;IACtBC,WAAA,GAAcH,OAAA,CAAQC,GAAA,CAAIG,YAAA,IAAgB;IAC1CC,QAAA,GAAW;EACb,IAAIP,OAAA,IAAW,CAAC;EAEhB,IAAI,CAACC,OAAA,EACH,MAAM,IAAIhC,KAAA,CAAM,aAAa;EAG/B,MAAMuC,iBAAA,GAAoBC,mBAAA,CAAoBR,OAAO;IAC/CS,GAAA,GAAM,GAAGL,WAAA,IAAeG,iBAAiB,GAAGD,QAAQ;IAGpDI,IAAA,GAAO7C,kBAAA,CAAmB,IAAI8C,GAAA,CAAIF,GAAG,CAAC;EAE5C,IAAI;IACF,MAAMG,aAAA,GAAgBR,WAAA,GAClB,CAAC,IACD;QACES,MAAA,EAAQN,iBAAA;QACRO,QAAA,EAAUP;MACZ;MAEE;QAAEb;MAAQ,IAAI,MAAM5B,SAAA,CAAUgC,KAAA,EAAOY,IAAA,EAAME,aAAa;IAE9D,OAAOlB,OAAA;EACT,SAASqB,KAAA,EAAO;IACd,MAAM,IAAI9C,iBAAA,CAAkB,GAAG8C,KAAK,EAAE;EACxC;AACF;AAEA,eAAsBC,WACpBlB,KAAA,EACAC,OAAA,EACkB;EAClB,IAAI;IACF,aAAMJ,aAAA,CAAcG,KAAA,EAAOC,OAAO,GAC3B;EACT,QAAQ;IACN,OAAO;EACT;AACF;AAEA,SAASS,oBAAoBS,GAAA,EAAa;EACxC,OAAOA,GAAA,CAAIxB,OAAA,CAAQ,OAAO,EAAE;AAC9B","ignoreList":[]}
@@ -114,7 +114,9 @@ async function getAuthDataFromRequest(authServer, req, tokenOptions) {
114
114
  email: session.user.email || void 0,
115
115
  role: session.user.role === "admin" ? "admin" : void 0
116
116
  };
117
- } catch {}
117
+ } catch (err) {
118
+ console.warn("Error validating session", err);
119
+ }
118
120
  var jwtToken = authHeader?.replace("Bearer ", "");
119
121
  if (jwtToken) try {
120
122
  var payload = await validateToken(jwtToken, tokenOptions),
@@ -1 +1 @@
1
- {"version":3,"names":["createRemoteJWKSet","jwtVerify","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","o","Object","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","value","writable","configurable","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","obj","_wrap_native_super","_cache","Map"],"sources":["../../src/server.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createRemoteJWKSet","jwtVerify","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","o","Object","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","value","writable","configurable","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","obj","_wrap_native_super","_cache","Map"],"sources":["../../src/server.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@take-out/better-auth-utils",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Better auth utilities and client for React/React Native applications",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -38,7 +38,7 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "@take-out/helpers": "0.4.0",
41
+ "@take-out/helpers": "0.4.1",
42
42
  "jose": "^6.0.10"
43
43
  },
44
44
  "peerDependencies": {
package/src/server.ts CHANGED
@@ -65,7 +65,8 @@ export async function getAuthDataFromRequest(
65
65
  role: session.user.role === 'admin' ? 'admin' : undefined,
66
66
  }
67
67
  }
68
- } catch {
68
+ } catch (err) {
69
+ console.warn(`Error validating session`, err)
69
70
  // session auth failed, try JWT
70
71
  }
71
72
 
@@ -1,11 +1,11 @@
1
1
  {
2
- "mappings": ";;;;;AAMA,cAA6C,kBAAkB;AAE/D,iBAAiB,qBAAqB;;CAEpC;;CAEA;;CAEA;;AAGF,iBAAiB,SAAS;CACxB;CACA;CACA,MAAM;;AAGR,OAAO,cAAM,8BAA8B,MAAM;AACjD,OAAO,cAAM,0BAA0B,MAAM;AAE7C,YAAY,aAAa;CACvB,KAAK;EACH,aAAa,MAAM;GAAE,SAAS;QAC1B,QAAQ;GACN,MAAM;IAAE;IAAY;IAAuB;;cAE7C;;;;;;;;AASR,OAAO,iBAAe,uBACpB,YAAY,YACZ,KAAK,SACL,eAAe,uBACd,QAAQ;AAqDX,OAAO,iBAAe,cACpB,eACA,UAAU,uBACT,QAAQ;AAiCX,OAAO,iBAAe,WACpB,eACA,SAAS,uBACR",
2
+ "mappings": ";;;;;AAMA,cAA6C,kBAAkB;AAE/D,iBAAiB,qBAAqB;;CAEpC;;CAEA;;CAEA;;AAGF,iBAAiB,SAAS;CACxB;CACA;CACA,MAAM;;AAGR,OAAO,cAAM,8BAA8B,MAAM;AACjD,OAAO,cAAM,0BAA0B,MAAM;AAE7C,YAAY,aAAa;CACvB,KAAK;EACH,aAAa,MAAM;GAAE,SAAS;QAC1B,QAAQ;GACN,MAAM;IAAE;IAAY;IAAuB;;cAE7C;;;;;;;;AASR,OAAO,iBAAe,uBACpB,YAAY,YACZ,KAAK,SACL,eAAe,uBACd,QAAQ;AAsDX,OAAO,iBAAe,cACpB,eACA,UAAU,uBACT,QAAQ;AAiCX,OAAO,iBAAe,WACpB,eACA,SAAS,uBACR",
3
3
  "names": [],
4
4
  "sources": [
5
5
  "src/server.ts"
6
6
  ],
7
7
  "version": 3,
8
8
  "sourcesContent": [
9
- "/**\n * Server-side auth utilities for better-auth\n * - Session validation via cookies (web)\n * - JWT validation via JWKS (native apps)\n */\n\nimport { createRemoteJWKSet, jwtVerify, type JWTPayload } from 'jose'\n\nexport interface ValidateTokenOptions {\n /** base URL for the auth server (e.g., https://myapp.com) */\n baseUrl?: string\n /** optional issuer override for CI/test environments */\n forceIssuer?: string\n /** JWKS endpoint path, defaults to /api/auth/jwks */\n jwksPath?: string\n}\n\nexport interface AuthData {\n id: string\n email?: string\n role: 'admin' | undefined\n}\n\nexport class NotAuthenticatedError extends Error {}\nexport class InvalidTokenError extends Error {}\n\nexport type AuthServer = {\n api: {\n getSession: (opts: { headers: Headers }) =>\n | Promise<{\n user: { id: string; email?: string | null; role?: string | null }\n } | null>\n | Promise<any>\n }\n}\n\n/**\n * Get auth data from request - tries session cookies first, then JWT header\n * Session: web apps with cookies forwarded by zero\n * JWT: native apps (Tauri, React Native) using Authorization header\n */\nexport async function getAuthDataFromRequest(\n authServer: AuthServer,\n req: Request,\n tokenOptions?: ValidateTokenOptions,\n): Promise<AuthData | null> {\n // from react native, better auth doesnt send cookie but insteead only the Authorization\n // but better auth wants to find the cookie here, so re-route it:\n\n const authHeader = req.headers.get('authorization')\n const cookie = authHeader?.split('Bearer ')[1]\n\n const newHeaders = new Headers(req.headers)\n if (cookie) {\n newHeaders.set('Cookie', cookie)\n }\n\n // try session-based auth first (web - cookies forwarded by zero)\n try {\n const session = await authServer.api.getSession({ headers: newHeaders })\n if (session?.user) {\n return {\n id: session.user.id,\n email: session.user.email || undefined,\n role: session.user.role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch {\n // session auth failed, try JWT\n }\n\n // try authorization header (token-based auth for native/tauri)\n\n const jwtToken = authHeader?.replace('Bearer ', '')\n\n if (jwtToken) {\n try {\n const payload = await validateToken(jwtToken, tokenOptions)\n const userId = (payload as any)?.id || payload?.sub\n if (userId) {\n return {\n id: userId as string,\n email: (payload as any).email as string | undefined,\n role: (payload as any).role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch (err) {\n if (!(err instanceof InvalidTokenError)) {\n throw err\n }\n }\n }\n\n return null\n}\n\n// jwt validation for native apps\n\nexport async function validateToken(\n token: string,\n options?: ValidateTokenOptions,\n): Promise<JWTPayload> {\n const {\n baseUrl = process.env.ONE_SERVER_URL,\n forceIssuer = process.env.FORCE_ISSUER || '',\n jwksPath = '/api/auth/jwks',\n } = options || {}\n\n if (!baseUrl) {\n throw new Error(`No baseURL!`)\n }\n\n const normalizedBaseUrl = removeTrailingSlash(baseUrl)\n const url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`\n\n // create fresh JWKS fetcher each time to avoid stale key cache issues\n const JWKS = createRemoteJWKSet(new URL(url))\n\n try {\n const verifyOptions = forceIssuer\n ? {}\n : {\n issuer: normalizedBaseUrl,\n audience: normalizedBaseUrl,\n }\n\n const { payload } = await jwtVerify(token, JWKS, verifyOptions)\n\n return payload\n } catch (error) {\n throw new InvalidTokenError(`${error}`)\n }\n}\n\nexport async function isValidJWT(\n token: string,\n options: ValidateTokenOptions,\n): Promise<boolean> {\n try {\n await validateToken(token, options)\n return true\n } catch {\n return false\n }\n}\n\nfunction removeTrailingSlash(str: string) {\n return str.replace(/\\/$/, '')\n}\n"
9
+ "/**\n * Server-side auth utilities for better-auth\n * - Session validation via cookies (web)\n * - JWT validation via JWKS (native apps)\n */\n\nimport { createRemoteJWKSet, jwtVerify, type JWTPayload } from 'jose'\n\nexport interface ValidateTokenOptions {\n /** base URL for the auth server (e.g., https://myapp.com) */\n baseUrl?: string\n /** optional issuer override for CI/test environments */\n forceIssuer?: string\n /** JWKS endpoint path, defaults to /api/auth/jwks */\n jwksPath?: string\n}\n\nexport interface AuthData {\n id: string\n email?: string\n role: 'admin' | undefined\n}\n\nexport class NotAuthenticatedError extends Error {}\nexport class InvalidTokenError extends Error {}\n\nexport type AuthServer = {\n api: {\n getSession: (opts: { headers: Headers }) =>\n | Promise<{\n user: { id: string; email?: string | null; role?: string | null }\n } | null>\n | Promise<any>\n }\n}\n\n/**\n * Get auth data from request - tries session cookies first, then JWT header\n * Session: web apps with cookies forwarded by zero\n * JWT: native apps (Tauri, React Native) using Authorization header\n */\nexport async function getAuthDataFromRequest(\n authServer: AuthServer,\n req: Request,\n tokenOptions?: ValidateTokenOptions,\n): Promise<AuthData | null> {\n // from react native, better auth doesnt send cookie but insteead only the Authorization\n // but better auth wants to find the cookie here, so re-route it:\n\n const authHeader = req.headers.get('authorization')\n const cookie = authHeader?.split('Bearer ')[1]\n\n const newHeaders = new Headers(req.headers)\n if (cookie) {\n newHeaders.set('Cookie', cookie)\n }\n\n // try session-based auth first (web - cookies forwarded by zero)\n try {\n const session = await authServer.api.getSession({ headers: newHeaders })\n if (session?.user) {\n return {\n id: session.user.id,\n email: session.user.email || undefined,\n role: session.user.role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch (err) {\n console.warn(`Error validating session`, err)\n // session auth failed, try JWT\n }\n\n // try authorization header (token-based auth for native/tauri)\n\n const jwtToken = authHeader?.replace('Bearer ', '')\n\n if (jwtToken) {\n try {\n const payload = await validateToken(jwtToken, tokenOptions)\n const userId = (payload as any)?.id || payload?.sub\n if (userId) {\n return {\n id: userId as string,\n email: (payload as any).email as string | undefined,\n role: (payload as any).role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch (err) {\n if (!(err instanceof InvalidTokenError)) {\n throw err\n }\n }\n }\n\n return null\n}\n\n// jwt validation for native apps\n\nexport async function validateToken(\n token: string,\n options?: ValidateTokenOptions,\n): Promise<JWTPayload> {\n const {\n baseUrl = process.env.ONE_SERVER_URL,\n forceIssuer = process.env.FORCE_ISSUER || '',\n jwksPath = '/api/auth/jwks',\n } = options || {}\n\n if (!baseUrl) {\n throw new Error(`No baseURL!`)\n }\n\n const normalizedBaseUrl = removeTrailingSlash(baseUrl)\n const url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`\n\n // create fresh JWKS fetcher each time to avoid stale key cache issues\n const JWKS = createRemoteJWKSet(new URL(url))\n\n try {\n const verifyOptions = forceIssuer\n ? {}\n : {\n issuer: normalizedBaseUrl,\n audience: normalizedBaseUrl,\n }\n\n const { payload } = await jwtVerify(token, JWKS, verifyOptions)\n\n return payload\n } catch (error) {\n throw new InvalidTokenError(`${error}`)\n }\n}\n\nexport async function isValidJWT(\n token: string,\n options: ValidateTokenOptions,\n): Promise<boolean> {\n try {\n await validateToken(token, options)\n return true\n } catch {\n return false\n }\n}\n\nfunction removeTrailingSlash(str: string) {\n return str.replace(/\\/$/, '')\n}\n"
10
10
  ]
11
11
  }