mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-08-28 05:25:33 +00:00
extension auth and sync working
This commit is contained in:
parent
e339800001
commit
7752cf813e
22 changed files with 92 additions and 50 deletions
|
|
@ -14,20 +14,23 @@ function App() {
|
|||
const jwt = response.jwt;
|
||||
const loginButton = document.getElementById('login');
|
||||
|
||||
if (loginButton)
|
||||
if (loginButton) {
|
||||
console.log('JWT', jwt);
|
||||
if (jwt) {
|
||||
fetch('http://localhost:3000/api/store', {
|
||||
console.log('DOING STUFF AND JWT');
|
||||
fetch('http://localhost:3000/api/me', {
|
||||
headers: {
|
||||
Authorization: `Bearer ${jwt}`,
|
||||
},
|
||||
})
|
||||
.then((res) => res.json())
|
||||
.then((data) => {
|
||||
const user = userObj.safeParse(data);
|
||||
if (user.success) {
|
||||
setUserData(user.data);
|
||||
console.log(data);
|
||||
const d = userObj.safeParse(data);
|
||||
if (d.success) {
|
||||
setUserData(d.data);
|
||||
} else {
|
||||
console.error(user.error);
|
||||
console.error(d.error);
|
||||
}
|
||||
});
|
||||
loginButton.style.display = 'none';
|
||||
|
|
@ -39,14 +42,11 @@ function App() {
|
|||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
doStuff();
|
||||
// Set event listerner for storage change
|
||||
chrome.storage.onChanged.addListener(() => {
|
||||
doStuff();
|
||||
});
|
||||
}, [count]);
|
||||
|
||||
return (
|
||||
|
|
@ -58,12 +58,12 @@ function App() {
|
|||
<img
|
||||
width={40}
|
||||
className="rounded-full"
|
||||
src={userData.data.user.image!}
|
||||
src={userData.data[0].user.image!}
|
||||
alt=""
|
||||
/>
|
||||
<div>
|
||||
<h3>{userData.data.user.name}</h3>
|
||||
<p>{userData.data.user.email}</p>
|
||||
<h3>{userData.data[0].user.name}</h3>
|
||||
<p>{userData.data[0].user.email}</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { z } from "zod"
|
|||
|
||||
export const userObj = z.object({
|
||||
message: z.string(),
|
||||
data: z.object({
|
||||
data: z.array(z.object({
|
||||
session: z.object({
|
||||
sessionToken: z.string(),
|
||||
userId: z.string(),
|
||||
|
|
@ -11,9 +11,9 @@ export const userObj = z.object({
|
|||
user: z.object({
|
||||
id: z.string(),
|
||||
name: z.string(),
|
||||
email: z.string(),
|
||||
email: z.string().nullable().optional(),
|
||||
emailVerified: z.string().nullable(),
|
||||
image: z.string().nullable()
|
||||
image: z.string().nullable().optional()
|
||||
})
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
|
@ -1 +1 @@
|
|||
TCJ91xiYuM2-bim5k73AQ
|
||||
GE_fpFjPpwi13NmQCcZsW
|
||||
|
|
@ -1 +1 @@
|
|||
{"/favicon.ico/route":"/favicon.ico","/api/[...nextauth]/route":"/api/[...nextauth]","/_not-found":"/_not-found","/page":"/","/api/query/route":"/api/query","/api/hello/route":"/api/hello","/api/store/route":"/api/store"}
|
||||
{"/favicon.ico/route":"/favicon.ico","/api/[...nextauth]/route":"/api/[...nextauth]","/_not-found":"/_not-found","/page":"/","/api/me/route":"/api/me","/api/hello/route":"/api/hello","/api/store/route":"/api/store","/api/query/route":"/api/query"}
|
||||
|
|
@ -5,8 +5,8 @@
|
|||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"lowPriorityFiles": [
|
||||
"static/TCJ91xiYuM2-bim5k73AQ/_buildManifest.js",
|
||||
"static/TCJ91xiYuM2-bim5k73AQ/_ssgManifest.js"
|
||||
"static/GE_fpFjPpwi13NmQCcZsW/_buildManifest.js",
|
||||
"static/GE_fpFjPpwi13NmQCcZsW/_ssgManifest.js"
|
||||
],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/webpack-409f1dd28331797e.js",
|
||||
|
|
@ -18,13 +18,13 @@
|
|||
"/_app": [
|
||||
"static/chunks/webpack-409f1dd28331797e.js",
|
||||
"static/chunks/framework-c25027af42eb8c45.js",
|
||||
"static/chunks/main-d2ba0a54f830eae9.js",
|
||||
"static/chunks/main-6d41ecb2c0d95e72.js",
|
||||
"static/chunks/pages/_app-508d387925ef2fa9.js"
|
||||
],
|
||||
"/_error": [
|
||||
"static/chunks/webpack-409f1dd28331797e.js",
|
||||
"static/chunks/framework-c25027af42eb8c45.js",
|
||||
"static/chunks/main-d2ba0a54f830eae9.js",
|
||||
"static/chunks/main-6d41ecb2c0d95e72.js",
|
||||
"static/chunks/pages/_error-e16765248192e4ee.js"
|
||||
]
|
||||
},
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
self.__PRERENDER_MANIFEST="{\"version\":4,\"routes\":{\"/favicon.ico\":{\"initialHeaders\":{\"cache-control\":\"public, max-age=0, must-revalidate\",\"content-type\":\"image/x-icon\",\"x-next-cache-tags\":\"_N_T_/layout,_N_T_/favicon.ico/layout,_N_T_/favicon.ico/route,_N_T_/favicon.ico\"},\"experimentalBypassFor\":[{\"type\":\"header\",\"key\":\"Next-Action\"},{\"type\":\"header\",\"key\":\"content-type\",\"value\":\"multipart/form-data\"}],\"initialRevalidateSeconds\":false,\"srcRoute\":\"/favicon.ico\",\"dataRoute\":null}},\"dynamicRoutes\":{},\"notFoundRoutes\":[],\"preview\":{\"previewModeId\":\"fdd7fa1b1855dc9205e2f7cb2a30bca4\",\"previewModeSigningKey\":\"a115afea0b0bc40d941358a311fa4fd4a8dcaa746c7f2049c56fcc64496d4cb0\",\"previewModeEncryptionKey\":\"71d3bd7c3e38b4cc9dcb57d6bbb141a28539cf9640c9851b9cf0e68153ec8130\"}}"
|
||||
self.__PRERENDER_MANIFEST="{\"version\":4,\"routes\":{\"/favicon.ico\":{\"initialHeaders\":{\"cache-control\":\"public, max-age=0, must-revalidate\",\"content-type\":\"image/x-icon\",\"x-next-cache-tags\":\"_N_T_/layout,_N_T_/favicon.ico/layout,_N_T_/favicon.ico/route,_N_T_/favicon.ico\"},\"experimentalBypassFor\":[{\"type\":\"header\",\"key\":\"Next-Action\"},{\"type\":\"header\",\"key\":\"content-type\",\"value\":\"multipart/form-data\"}],\"initialRevalidateSeconds\":false,\"srcRoute\":\"/favicon.ico\",\"dataRoute\":null}},\"dynamicRoutes\":{},\"notFoundRoutes\":[],\"preview\":{\"previewModeId\":\"c0dbc02cfe143a5c6937aa0cbba65268\",\"previewModeSigningKey\":\"5be9361f72b19862e69e55074a415c43ec8bf7d53d4956736abe3a703a869bd3\",\"previewModeEncryptionKey\":\"e9409a8c842417e2c2b7ec0df05a1a93b5aab3efebf2efd084ad26d4707050d6\"}}"
|
||||
|
|
@ -1 +1 @@
|
|||
{"version":4,"routes":{"/favicon.ico":{"initialHeaders":{"cache-control":"public, max-age=0, must-revalidate","content-type":"image/x-icon","x-next-cache-tags":"_N_T_/layout,_N_T_/favicon.ico/layout,_N_T_/favicon.ico/route,_N_T_/favicon.ico"},"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data"}],"initialRevalidateSeconds":false,"srcRoute":"/favicon.ico","dataRoute":null}},"dynamicRoutes":{},"notFoundRoutes":[],"preview":{"previewModeId":"fdd7fa1b1855dc9205e2f7cb2a30bca4","previewModeSigningKey":"a115afea0b0bc40d941358a311fa4fd4a8dcaa746c7f2049c56fcc64496d4cb0","previewModeEncryptionKey":"71d3bd7c3e38b4cc9dcb57d6bbb141a28539cf9640c9851b9cf0e68153ec8130"}}
|
||||
{"version":4,"routes":{"/favicon.ico":{"initialHeaders":{"cache-control":"public, max-age=0, must-revalidate","content-type":"image/x-icon","x-next-cache-tags":"_N_T_/layout,_N_T_/favicon.ico/layout,_N_T_/favicon.ico/route,_N_T_/favicon.ico"},"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data"}],"initialRevalidateSeconds":false,"srcRoute":"/favicon.ico","dataRoute":null}},"dynamicRoutes":{},"notFoundRoutes":[],"preview":{"previewModeId":"c0dbc02cfe143a5c6937aa0cbba65268","previewModeSigningKey":"5be9361f72b19862e69e55074a415c43ec8bf7d53d4956736abe3a703a869bd3","previewModeEncryptionKey":"e9409a8c842417e2c2b7ec0df05a1a93b5aab3efebf2efd084ad26d4707050d6"}}
|
||||
|
|
@ -3,7 +3,8 @@
|
|||
"/api/[...nextauth]/route": "app/api/[...nextauth]/route.js",
|
||||
"/_not-found": "app/_not-found.js",
|
||||
"/page": "app/page.js",
|
||||
"/api/query/route": "app/api/query/route.js",
|
||||
"/api/me/route": "app/api/me/route.js",
|
||||
"/api/hello/route": "app/api/hello/route.js",
|
||||
"/api/store/route": "app/api/store/route.js"
|
||||
"/api/store/route": "app/api/store/route.js",
|
||||
"/api/query/route": "app/api/query/route.js"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
{"version":1,"functions":{"/api/[...nextauth]":{},"/api/query":{},"/_not-found":{},"/":{},"/api/store":{},"/api/hello":{}}}
|
||||
{"version":1,"functions":{"/api/[...nextauth]":{},"/_not-found":{},"/api/store":{},"/api/me":{},"/":{},"/api/query":{},"/api/hello":{}}}
|
||||
|
|
@ -1 +1 @@
|
|||
self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-c67a75d1b6f99dc8.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:["static/TCJ91xiYuM2-bim5k73AQ/_buildManifest.js","static/TCJ91xiYuM2-bim5k73AQ/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-409f1dd28331797e.js","static/chunks/30b509c0-d7721ce4b2012053.js","static/chunks/25-2f3c60275645c813.js","static/chunks/main-app-8b951cccf46caf8d.js"],pages:{"/_app":["static/chunks/webpack-409f1dd28331797e.js","static/chunks/framework-c25027af42eb8c45.js","static/chunks/main-d2ba0a54f830eae9.js","static/chunks/pages/_app-508d387925ef2fa9.js"],"/_error":["static/chunks/webpack-409f1dd28331797e.js","static/chunks/framework-c25027af42eb8c45.js","static/chunks/main-d2ba0a54f830eae9.js","static/chunks/pages/_error-e16765248192e4ee.js"]},ampFirstPages:[]};
|
||||
self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-c67a75d1b6f99dc8.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:["static/GE_fpFjPpwi13NmQCcZsW/_buildManifest.js","static/GE_fpFjPpwi13NmQCcZsW/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-409f1dd28331797e.js","static/chunks/30b509c0-d7721ce4b2012053.js","static/chunks/25-2f3c60275645c813.js","static/chunks/main-app-8b951cccf46caf8d.js"],pages:{"/_app":["static/chunks/webpack-409f1dd28331797e.js","static/chunks/framework-c25027af42eb8c45.js","static/chunks/main-6d41ecb2c0d95e72.js","static/chunks/pages/_app-508d387925ef2fa9.js"],"/_error":["static/chunks/webpack-409f1dd28331797e.js","static/chunks/framework-c25027af42eb8c45.js","static/chunks/main-6d41ecb2c0d95e72.js","static/chunks/pages/_error-e16765248192e4ee.js"]},ampFirstPages:[]};
|
||||
|
|
@ -66,21 +66,21 @@
|
|||
"wasm": [],
|
||||
"assets": []
|
||||
},
|
||||
"/api/query/route": {
|
||||
"/api/me/route": {
|
||||
"files": [
|
||||
"server/middleware-build-manifest.js",
|
||||
"server/middleware-react-loadable-manifest.js",
|
||||
"server/next-font-manifest.js",
|
||||
"prerender-manifest.js",
|
||||
"server/edge-runtime-webpack.js",
|
||||
"server/app/api/query/route.js"
|
||||
"server/app/api/me/route.js"
|
||||
],
|
||||
"name": "app/api/query/route",
|
||||
"page": "/api/query/route",
|
||||
"name": "app/api/me/route",
|
||||
"page": "/api/me/route",
|
||||
"matchers": [
|
||||
{
|
||||
"regexp": "^/api/query$",
|
||||
"originalSource": "/api/query"
|
||||
"regexp": "^/api/me$",
|
||||
"originalSource": "/api/me"
|
||||
}
|
||||
],
|
||||
"wasm": [],
|
||||
|
|
@ -125,6 +125,26 @@
|
|||
],
|
||||
"wasm": [],
|
||||
"assets": []
|
||||
},
|
||||
"/api/query/route": {
|
||||
"files": [
|
||||
"server/middleware-build-manifest.js",
|
||||
"server/middleware-react-loadable-manifest.js",
|
||||
"server/next-font-manifest.js",
|
||||
"prerender-manifest.js",
|
||||
"server/edge-runtime-webpack.js",
|
||||
"server/app/api/query/route.js"
|
||||
],
|
||||
"name": "app/api/query/route",
|
||||
"page": "/api/query/route",
|
||||
"matchers": [
|
||||
{
|
||||
"regexp": "^/api/query$",
|
||||
"originalSource": "/api/query"
|
||||
}
|
||||
],
|
||||
"wasm": [],
|
||||
"assets": []
|
||||
}
|
||||
},
|
||||
"version": 2
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-409f1dd28331797e.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-c25027af42eb8c45.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-d2ba0a54f830eae9.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-508d387925ef2fa9.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_error-e16765248192e4ee.js" defer="" crossorigin=""></script><script src="/_next/static/TCJ91xiYuM2-bim5k73AQ/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/TCJ91xiYuM2-bim5k73AQ/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"TCJ91xiYuM2-bim5k73AQ","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-409f1dd28331797e.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-c25027af42eb8c45.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-6d41ecb2c0d95e72.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-508d387925ef2fa9.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_error-e16765248192e4ee.js" defer="" crossorigin=""></script><script src="/_next/static/GE_fpFjPpwi13NmQCcZsW/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/GE_fpFjPpwi13NmQCcZsW/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"GE_fpFjPpwi13NmQCcZsW","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
||||
|
|
@ -1 +1 @@
|
|||
self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"RFdgUh3c3agWbZbah557lZ1TbCHmaViE0ZMC57NAcrc=\"}"
|
||||
self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"PoRrL5cujaEXxf2b/M/jGou2uriziZUOM2/U5ZgxW/s=\"}"
|
||||
|
|
@ -1 +1 @@
|
|||
{"node":{},"edge":{},"encryptionKey":"RFdgUh3c3agWbZbah557lZ1TbCHmaViE0ZMC57NAcrc="}
|
||||
{"node":{},"edge":{},"encryptionKey":"PoRrL5cujaEXxf2b/M/jGou2uriziZUOM2/U5ZgxW/s="}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -3,12 +3,12 @@
|
|||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"dev-arch": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"pages:build": "pnpm next-on-pages",
|
||||
"preview": "pnpm pages:build && wrangler pages dev .vercel/output/static --port=3000",
|
||||
"dev": "pnpm pages:build && wrangler pages dev .vercel/output/static --port=3000",
|
||||
"deploy": "pnpm pages:build && wrangler pages deploy .vercel/output/static"
|
||||
},
|
||||
"dependencies": {
|
||||
|
|
|
|||
20
apps/web/src/app/api/me/route.ts
Normal file
20
apps/web/src/app/api/me/route.ts
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import { db } from "@/server/db";
|
||||
import { eq } from "drizzle-orm";
|
||||
import { sessions, users } from "@/server/db/schema";
|
||||
import { type NextRequest, NextResponse } from "next/server";
|
||||
import { env } from "@/env";
|
||||
|
||||
export const runtime = "edge";
|
||||
|
||||
export async function GET(req: NextRequest) {
|
||||
const token = req.cookies.get("next-auth.session-token")?.value ?? req.cookies.get("__Secure-authjs.session-token")?.value ?? req.cookies.get("authjs.session-token")?.value ?? req.headers.get("Authorization")?.replace("Bearer ", "");
|
||||
|
||||
const session = await db.select().from(sessions).where(eq(sessions.sessionToken, token!))
|
||||
.leftJoin(users, eq(sessions.userId, users.id)).limit(1)
|
||||
|
||||
if (!session || session.length === 0) {
|
||||
return NextResponse.json({ message: "Invalid Key, session not found." }, { status: 404 });
|
||||
}
|
||||
|
||||
return new Response(JSON.stringify({ message: "OK", data: session }), { status: 200 });
|
||||
}
|
||||
|
|
@ -6,9 +6,10 @@ import { Component } from "@/components/component";
|
|||
export const runtime = 'edge';
|
||||
|
||||
export default function Home() {
|
||||
const token = cookies().get('next-auth.session-token')?.value ?? cookies().get("__Secure-authjs.session-token")?.value ?? cookies().get("authjs.session-token")?.value
|
||||
return (
|
||||
<main>
|
||||
<MessagePoster jwt={cookies().get('next-auth.session-token')?.value!} />
|
||||
{token && <MessagePoster jwt={token} />}
|
||||
<Component/>
|
||||
</main>
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue