extension auth and sync working

This commit is contained in:
Dhravya 2024-02-27 13:08:31 -07:00
parent e339800001
commit 7752cf813e
22 changed files with 92 additions and 50 deletions

View file

@ -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>
)}

View file

@ -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()
})
})
}))
})

View file

@ -1 +1 @@
TCJ91xiYuM2-bim5k73AQ
GE_fpFjPpwi13NmQCcZsW

View file

@ -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"}

View file

@ -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"
]
},

View file

@ -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\"}}"

View file

@ -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"}}

View file

@ -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

View file

@ -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":{}}}

View file

@ -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:[]};

View file

@ -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

View file

@ -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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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>

View file

@ -1 +1 @@
self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"RFdgUh3c3agWbZbah557lZ1TbCHmaViE0ZMC57NAcrc=\"}"
self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"PoRrL5cujaEXxf2b/M/jGou2uriziZUOM2/U5ZgxW/s=\"}"

View file

@ -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

View file

@ -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": {

View 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 });
}

View file

@ -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>
);