From 4a04d8377efd2c521acc47c842c7265d5fc709a3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:02:59 +0000 Subject: [PATCH 1/6] Initial plan From 9e65ed8f6464e3b45e92003a590424fbff0fd66b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:07:29 +0000 Subject: [PATCH 2/6] Initial analysis: Understanding Google OAuth redirect issue Co-authored-by: kris70lesgo <170333495+kris70lesgo@users.noreply.github.com> --- package-lock.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97afd30..58fb027 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3071,7 +3071,6 @@ "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -3082,7 +3081,6 @@ "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.0.0" } @@ -3149,7 +3147,6 @@ "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.34.1", "@typescript-eslint/types": "8.34.1", @@ -3666,7 +3663,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4086,7 +4082,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001718", "electron-to-chromium": "^1.5.160", @@ -4764,7 +4759,6 @@ "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -4938,7 +4932,6 @@ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -7503,7 +7496,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -7696,7 +7688,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -7706,7 +7697,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -8544,7 +8534,6 @@ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -8710,7 +8699,6 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" From c4726a3d65022914029823ac9410281b1cd4a39d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:11:17 +0000 Subject: [PATCH 3/6] Add OAuth callback handler and update Google sign-in redirect Co-authored-by: kris70lesgo <170333495+kris70lesgo@users.noreply.github.com> --- .eslintcache | 1 + src/app/auth/callback/route.ts | 30 ++++++++++++++++++++++++++++++ src/components/signup.tsx | 2 +- 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 .eslintcache create mode 100644 src/app/auth/callback/route.ts diff --git a/.eslintcache b/.eslintcache new file mode 100644 index 0000000..c7063fb --- /dev/null +++ b/.eslintcache @@ -0,0 +1 @@ +[{"/home/runner/work/asHelp/asHelp/eslint.config.mjs":"1","/home/runner/work/asHelp/asHelp/next.config.ts":"2","/home/runner/work/asHelp/asHelp/postcss.config.mjs":"3","/home/runner/work/asHelp/asHelp/src/app/ai-generator/page.tsx":"4","/home/runner/work/asHelp/asHelp/src/app/api/chat-assignment/route.ts":"5","/home/runner/work/asHelp/asHelp/src/app/api/export-document/route.ts":"6","/home/runner/work/asHelp/asHelp/src/app/api/fetch-image/route.ts":"7","/home/runner/work/asHelp/asHelp/src/app/api/generate-assignment/route.ts":"8","/home/runner/work/asHelp/asHelp/src/app/api/notify/confirmation/route.ts":"9","/home/runner/work/asHelp/asHelp/src/app/api/order.ts":"10","/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/route.ts":"11","/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/verify/route.ts":"12","/home/runner/work/asHelp/asHelp/src/app/auth/callback/route.ts":"13","/home/runner/work/asHelp/asHelp/src/app/contact/page.tsx":"14","/home/runner/work/asHelp/asHelp/src/app/dashboard/page.tsx":"15","/home/runner/work/asHelp/asHelp/src/app/form/page.tsx":"16","/home/runner/work/asHelp/asHelp/src/app/layout.tsx":"17","/home/runner/work/asHelp/asHelp/src/app/page.tsx":"18","/home/runner/work/asHelp/asHelp/src/app/payment/page.tsx":"19","/home/runner/work/asHelp/asHelp/src/app/sign/page.tsx":"20","/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Aurora.tsx":"21","/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Particles.tsx":"22","/home/runner/work/asHelp/asHelp/src/components/BlurText.tsx":"23","/home/runner/work/asHelp/asHelp/src/components/SplitText.tsx":"24","/home/runner/work/asHelp/asHelp/src/components/VariableProximity.tsx":"25","/home/runner/work/asHelp/asHelp/src/components/animate-ui/ShinyText.tsx":"26","/home/runner/work/asHelp/asHelp/src/components/animate-ui/buttons/github-stars.tsx":"27","/home/runner/work/asHelp/asHelp/src/components/animate-ui/components/counter.tsx":"28","/home/runner/work/asHelp/asHelp/src/components/animate-ui/radix/checkbox.tsx":"29","/home/runner/work/asHelp/asHelp/src/components/animate-ui/text/sliding-number.tsx":"30","/home/runner/work/asHelp/asHelp/src/components/back-to-top.tsx":"31","/home/runner/work/asHelp/asHelp/src/components/button.tsx":"32","/home/runner/work/asHelp/asHelp/src/components/button2.tsx":"33","/home/runner/work/asHelp/asHelp/src/components/footer.tsx":"34","/home/runner/work/asHelp/asHelp/src/components/loader.tsx":"35","/home/runner/work/asHelp/asHelp/src/components/magicui/animated-shiny-text.tsx":"36","/home/runner/work/asHelp/asHelp/src/components/marqueewrap.tsx":"37","/home/runner/work/asHelp/asHelp/src/components/mwrap.tsx":"38","/home/runner/work/asHelp/asHelp/src/components/nav.tsx":"39","/home/runner/work/asHelp/asHelp/src/components/navbar1.tsx":"40","/home/runner/work/asHelp/asHelp/src/components/paybutton.tsx":"41","/home/runner/work/asHelp/asHelp/src/components/payment.tsx":"42","/home/runner/work/asHelp/asHelp/src/components/signup-form-demo.tsx":"43","/home/runner/work/asHelp/asHelp/src/components/signup.tsx":"44","/home/runner/work/asHelp/asHelp/src/components/skeletons/dashboardPageSkeleton.tsx":"45","/home/runner/work/asHelp/asHelp/src/components/skeletons/homePageSkeleton.tsx":"46","/home/runner/work/asHelp/asHelp/src/components/skeletons/signinPageSkeleton.tsx":"47","/home/runner/work/asHelp/asHelp/src/components/ui/GradientIconButton.tsx":"48","/home/runner/work/asHelp/asHelp/src/components/ui/avatar-circles.tsx":"49","/home/runner/work/asHelp/asHelp/src/components/ui/background-beams-with-collision.tsx":"50","/home/runner/work/asHelp/asHelp/src/components/ui/background-boxes.tsx":"51","/home/runner/work/asHelp/asHelp/src/components/ui/button.tsx":"52","/home/runner/work/asHelp/asHelp/src/components/ui/card.tsx":"53","/home/runner/work/asHelp/asHelp/src/components/ui/container-scroll-animation.tsx":"54","/home/runner/work/asHelp/asHelp/src/components/ui/container-text-flip.tsx":"55","/home/runner/work/asHelp/asHelp/src/components/ui/input.tsx":"56","/home/runner/work/asHelp/asHelp/src/components/ui/label.tsx":"57","/home/runner/work/asHelp/asHelp/src/components/ui/marquee.tsx":"58","/home/runner/work/asHelp/asHelp/src/components/ui/progress.tsx":"59","/home/runner/work/asHelp/asHelp/src/components/ui/resizable-navbar.tsx":"60","/home/runner/work/asHelp/asHelp/src/components/ui/select.tsx":"61","/home/runner/work/asHelp/asHelp/src/components/ui/textarea.tsx":"62","/home/runner/work/asHelp/asHelp/src/components/upload.tsx":"63","/home/runner/work/asHelp/asHelp/src/components/usage-tracker.tsx":"64","/home/runner/work/asHelp/asHelp/src/lib/document-utils.ts":"65","/home/runner/work/asHelp/asHelp/src/lib/mailer.ts":"66","/home/runner/work/asHelp/asHelp/src/lib/razorpay.ts":"67","/home/runner/work/asHelp/asHelp/src/lib/supabaseclient.ts":"68","/home/runner/work/asHelp/asHelp/src/lib/utils.ts":"69","/home/runner/work/asHelp/asHelp/src/types/assignment.ts":"70","/home/runner/work/asHelp/asHelp/tailwind.config.js":"71"},{"size":523,"mtime":1762182249508,"results":"72","hashOfConfig":"73"},{"size":133,"mtime":1762182249508,"results":"74","hashOfConfig":"75"},{"size":92,"mtime":1762182249509,"results":"76","hashOfConfig":"73"},{"size":24506,"mtime":1762182249522,"results":"77","hashOfConfig":"75"},{"size":3196,"mtime":1762182249522,"results":"78","hashOfConfig":"75"},{"size":898,"mtime":1762182249522,"results":"79","hashOfConfig":"75"},{"size":1536,"mtime":1762182249522,"results":"80","hashOfConfig":"75"},{"size":6558,"mtime":1762182249522,"results":"81","hashOfConfig":"75"},{"size":1117,"mtime":1762182249523,"results":"82","hashOfConfig":"75"},{"size":918,"mtime":1762182249523,"results":"83","hashOfConfig":"75"},{"size":692,"mtime":1762182249523,"results":"84","hashOfConfig":"75"},{"size":1816,"mtime":1762182249523,"results":"85","hashOfConfig":"75"},{"size":1008,"mtime":1762182475805,"results":"86","hashOfConfig":"75"},{"size":12059,"mtime":1762182249523,"results":"87","hashOfConfig":"75"},{"size":13811,"mtime":1762182249523,"results":"88","hashOfConfig":"75"},{"size":24579,"mtime":1762182249523,"results":"89","hashOfConfig":"75"},{"size":616,"mtime":1762182249523,"results":"90","hashOfConfig":"75"},{"size":9124,"mtime":1762182249523,"results":"91","hashOfConfig":"75"},{"size":383,"mtime":1762182249523,"results":"92","hashOfConfig":"75"},{"size":2667,"mtime":1762182249523,"results":"93","hashOfConfig":"75"},{"size":5997,"mtime":1762182249524,"results":"94","hashOfConfig":"75"},{"size":7122,"mtime":1762182249524,"results":"95","hashOfConfig":"75"},{"size":3681,"mtime":1762182249524,"results":"96","hashOfConfig":"75"},{"size":3385,"mtime":1762182249524,"results":"97","hashOfConfig":"75"},{"size":7309,"mtime":1762182249524,"results":"98","hashOfConfig":"75"},{"size":901,"mtime":1762182249524,"results":"99","hashOfConfig":"75"},{"size":8568,"mtime":1762182249524,"results":"100","hashOfConfig":"75"},{"size":2100,"mtime":1762182249524,"results":"101","hashOfConfig":"75"},{"size":2670,"mtime":1762182249524,"results":"102","hashOfConfig":"75"},{"size":6069,"mtime":1762182249524,"results":"103","hashOfConfig":"75"},{"size":1430,"mtime":1762182249524,"results":"104","hashOfConfig":"75"},{"size":1927,"mtime":1762182249524,"results":"105","hashOfConfig":"75"},{"size":1939,"mtime":1762182249524,"results":"106","hashOfConfig":"75"},{"size":10119,"mtime":1762182249524,"results":"107","hashOfConfig":"75"},{"size":2922,"mtime":1762182249524,"results":"108","hashOfConfig":"75"},{"size":1004,"mtime":1762182249524,"results":"109","hashOfConfig":"75"},{"size":2890,"mtime":1762182249524,"results":"110","hashOfConfig":"75"},{"size":4878,"mtime":1762182249524,"results":"111","hashOfConfig":"75"},{"size":3290,"mtime":1762182249525,"results":"112","hashOfConfig":"75"},{"size":3321,"mtime":1762182249525,"results":"113","hashOfConfig":"75"},{"size":5932,"mtime":1762182249525,"results":"114","hashOfConfig":"75"},{"size":20843,"mtime":1762182249525,"results":"115","hashOfConfig":"75"},{"size":5172,"mtime":1762182249525,"results":"116","hashOfConfig":"75"},{"size":10241,"mtime":1762182487934,"results":"117","hashOfConfig":"75"},{"size":4365,"mtime":1762182249525,"results":"118","hashOfConfig":"75"},{"size":2857,"mtime":1762182249525,"results":"119","hashOfConfig":"75"},{"size":1836,"mtime":1762182249525,"results":"120","hashOfConfig":"75"},{"size":3353,"mtime":1762182249525,"results":"121","hashOfConfig":"75"},{"size":1214,"mtime":1762182249525,"results":"122","hashOfConfig":"75"},{"size":6764,"mtime":1762182249525,"results":"123","hashOfConfig":"75"},{"size":2163,"mtime":1762182249525,"results":"124","hashOfConfig":"75"},{"size":2123,"mtime":1762182249525,"results":"125","hashOfConfig":"75"},{"size":1875,"mtime":1762182249525,"results":"126","hashOfConfig":"75"},{"size":2619,"mtime":1762182249525,"results":"127","hashOfConfig":"75"},{"size":3256,"mtime":1762182249525,"results":"128","hashOfConfig":"75"},{"size":2118,"mtime":1762182249525,"results":"129","hashOfConfig":"75"},{"size":620,"mtime":1762182249525,"results":"130","hashOfConfig":"75"},{"size":1698,"mtime":1762182249525,"results":"131","hashOfConfig":"75"},{"size":775,"mtime":1762182249525,"results":"132","hashOfConfig":"75"},{"size":8009,"mtime":1762182249526,"results":"133","hashOfConfig":"75"},{"size":5611,"mtime":1762182249526,"results":"134","hashOfConfig":"75"},{"size":833,"mtime":1762182249526,"results":"135","hashOfConfig":"75"},{"size":1149,"mtime":1762182249526,"results":"136","hashOfConfig":"75"},{"size":3257,"mtime":1762182249526,"results":"137","hashOfConfig":"75"},{"size":6327,"mtime":1762182249526,"results":"138","hashOfConfig":"75"},{"size":2280,"mtime":1762182249526,"results":"139","hashOfConfig":"75"},{"size":183,"mtime":1762182249526,"results":"140","hashOfConfig":"75"},{"size":517,"mtime":1762182249526,"results":"141","hashOfConfig":"75"},{"size":166,"mtime":1762182249526,"results":"142","hashOfConfig":"75"},{"size":519,"mtime":1762182249526,"results":"143","hashOfConfig":"75"},{"size":1423,"mtime":1762182249526,"results":"144","hashOfConfig":"73"},{"filePath":"145","messages":"146","suppressedMessages":"147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1bazwqp",{"filePath":"148","messages":"149","suppressedMessages":"150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"14vyhra",{"filePath":"151","messages":"152","suppressedMessages":"153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","suppressedMessages":"156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"157","messages":"158","suppressedMessages":"159","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"160","messages":"161","suppressedMessages":"162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"163","messages":"164","suppressedMessages":"165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","suppressedMessages":"168","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"169","messages":"170","suppressedMessages":"171","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"172","messages":"173","suppressedMessages":"174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"175","messages":"176","suppressedMessages":"177","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"178","messages":"179","suppressedMessages":"180","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"181","messages":"182","suppressedMessages":"183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"184","messages":"185","suppressedMessages":"186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"187","messages":"188","suppressedMessages":"189","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"190","messages":"191","suppressedMessages":"192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"193","messages":"194","suppressedMessages":"195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","suppressedMessages":"198","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"199","messages":"200","suppressedMessages":"201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","suppressedMessages":"204","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"205","messages":"206","suppressedMessages":"207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"208","messages":"209","suppressedMessages":"210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"211","messages":"212","suppressedMessages":"213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"214","messages":"215","suppressedMessages":"216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"217","messages":"218","suppressedMessages":"219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"220","messages":"221","suppressedMessages":"222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"223","messages":"224","suppressedMessages":"225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"226","messages":"227","suppressedMessages":"228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"229","messages":"230","suppressedMessages":"231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"232","messages":"233","suppressedMessages":"234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"235","messages":"236","suppressedMessages":"237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"238","messages":"239","suppressedMessages":"240","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"241","messages":"242","suppressedMessages":"243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","suppressedMessages":"246","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"247","messages":"248","suppressedMessages":"249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"250","messages":"251","suppressedMessages":"252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"253","messages":"254","suppressedMessages":"255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"256","messages":"257","suppressedMessages":"258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"259","messages":"260","suppressedMessages":"261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","suppressedMessages":"264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"265","messages":"266","suppressedMessages":"267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","suppressedMessages":"270","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"271","messages":"272","suppressedMessages":"273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","suppressedMessages":"276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"277","messages":"278","suppressedMessages":"279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","suppressedMessages":"282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"283","messages":"284","suppressedMessages":"285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"286","messages":"287","suppressedMessages":"288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"289","messages":"290","suppressedMessages":"291","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"292","messages":"293","suppressedMessages":"294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"295","messages":"296","suppressedMessages":"297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"298","messages":"299","suppressedMessages":"300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"301","messages":"302","suppressedMessages":"303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"304","messages":"305","suppressedMessages":"306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"307","messages":"308","suppressedMessages":"309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"310","messages":"311","suppressedMessages":"312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"313","messages":"314","suppressedMessages":"315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"316","messages":"317","suppressedMessages":"318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"319","messages":"320","suppressedMessages":"321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"322","messages":"323","suppressedMessages":"324","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"325","messages":"326","suppressedMessages":"327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"328","messages":"329","suppressedMessages":"330","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"331","messages":"332","suppressedMessages":"333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"334","messages":"335","suppressedMessages":"336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"337","messages":"338","suppressedMessages":"339","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"340","messages":"341","suppressedMessages":"342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"343","messages":"344","suppressedMessages":"345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"346","messages":"347","suppressedMessages":"348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"349","messages":"350","suppressedMessages":"351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"352","messages":"353","suppressedMessages":"354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"355","messages":"356","suppressedMessages":"357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/asHelp/asHelp/eslint.config.mjs",[],[],"/home/runner/work/asHelp/asHelp/next.config.ts",[],[],"/home/runner/work/asHelp/asHelp/postcss.config.mjs",[],[],"/home/runner/work/asHelp/asHelp/src/app/ai-generator/page.tsx",[],["358","359","360"],"/home/runner/work/asHelp/asHelp/src/app/api/chat-assignment/route.ts",["361"],[],"/home/runner/work/asHelp/asHelp/src/app/api/export-document/route.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/api/fetch-image/route.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/api/generate-assignment/route.ts",["362"],[],"/home/runner/work/asHelp/asHelp/src/app/api/notify/confirmation/route.ts",["363"],[],"/home/runner/work/asHelp/asHelp/src/app/api/order.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/route.ts",["364"],[],"/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/verify/route.ts",["365"],[],"/home/runner/work/asHelp/asHelp/src/app/auth/callback/route.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/contact/page.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/app/dashboard/page.tsx",["366","367","368"],[],"/home/runner/work/asHelp/asHelp/src/app/form/page.tsx",[],["369","370","371","372"],"/home/runner/work/asHelp/asHelp/src/app/layout.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/app/page.tsx",["373"],[],"/home/runner/work/asHelp/asHelp/src/app/payment/page.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/app/sign/page.tsx",["374"],[],"/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Aurora.tsx",[],["375","376"],"/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Particles.tsx",[],["377"],"/home/runner/work/asHelp/asHelp/src/components/BlurText.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/SplitText.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/VariableProximity.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/ShinyText.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/buttons/github-stars.tsx",[],["378","379"],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/components/counter.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/radix/checkbox.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/text/sliding-number.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/back-to-top.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/button.tsx",["380"],[],"/home/runner/work/asHelp/asHelp/src/components/button2.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/footer.tsx",["381"],[],"/home/runner/work/asHelp/asHelp/src/components/loader.tsx",[],["382"],"/home/runner/work/asHelp/asHelp/src/components/magicui/animated-shiny-text.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/marqueewrap.tsx",[],["383"],"/home/runner/work/asHelp/asHelp/src/components/mwrap.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/nav.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/navbar1.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/paybutton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/payment.tsx",["384"],[],"/home/runner/work/asHelp/asHelp/src/components/signup-form-demo.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/signup.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/skeletons/dashboardPageSkeleton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/skeletons/homePageSkeleton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/skeletons/signinPageSkeleton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/GradientIconButton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/avatar-circles.tsx",["385"],[],"/home/runner/work/asHelp/asHelp/src/components/ui/background-beams-with-collision.tsx",[],["386","387"],"/home/runner/work/asHelp/asHelp/src/components/ui/background-boxes.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/button.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/card.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/container-scroll-animation.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/container-text-flip.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/input.tsx",[],["388"],"/home/runner/work/asHelp/asHelp/src/components/ui/label.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/marquee.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/progress.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/resizable-navbar.tsx",["389"],[],"/home/runner/work/asHelp/asHelp/src/components/ui/select.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/textarea.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/upload.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/usage-tracker.tsx",[],["390"],"/home/runner/work/asHelp/asHelp/src/lib/document-utils.ts",["391"],[],"/home/runner/work/asHelp/asHelp/src/lib/mailer.ts",[],[],"/home/runner/work/asHelp/asHelp/src/lib/razorpay.ts",[],[],"/home/runner/work/asHelp/asHelp/src/lib/supabaseclient.ts",[],[],"/home/runner/work/asHelp/asHelp/src/lib/utils.ts",[],[],"/home/runner/work/asHelp/asHelp/src/types/assignment.ts",[],[],"/home/runner/work/asHelp/asHelp/tailwind.config.js",[],[],{"ruleId":"392","severity":2,"message":"393","line":37,"column":10,"nodeType":null,"messageId":"394","endLine":37,"endColumn":18,"suppressions":"395"},{"ruleId":"392","severity":2,"message":"396","line":37,"column":20,"nodeType":null,"messageId":"394","endLine":37,"endColumn":31,"suppressions":"397"},{"ruleId":"398","severity":2,"message":"399","line":200,"column":13,"nodeType":"400","endLine":200,"endColumn":88,"suppressions":"401"},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"402","line":83,"column":6},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"403","line":109,"column":4},{"ruleId":"404","severity":2,"message":"405","line":27,"column":17,"nodeType":"406","messageId":"407","endLine":27,"endColumn":20,"suggestions":"408"},{"ruleId":"404","severity":2,"message":"405","line":17,"column":17,"nodeType":"406","messageId":"407","endLine":17,"endColumn":20,"suggestions":"409"},{"ruleId":"404","severity":2,"message":"405","line":52,"column":17,"nodeType":"406","messageId":"407","endLine":52,"endColumn":20,"suggestions":"410"},{"ruleId":"392","severity":2,"message":"411","line":2,"column":27,"nodeType":null,"messageId":"394","endLine":2,"endColumn":36},{"ruleId":"392","severity":2,"message":"412","line":74,"column":21,"nodeType":null,"messageId":"394","endLine":74,"endColumn":33},{"ruleId":"392","severity":2,"message":"413","line":138,"column":9,"nodeType":null,"messageId":"394","endLine":138,"endColumn":19},{"ruleId":"392","severity":2,"message":"414","line":34,"column":12,"nodeType":null,"messageId":"394","endLine":34,"endColumn":19,"suppressions":"415"},{"ruleId":"392","severity":2,"message":"416","line":36,"column":12,"nodeType":null,"messageId":"394","endLine":36,"endColumn":17,"suppressions":"417"},{"ruleId":"392","severity":2,"message":"418","line":38,"column":12,"nodeType":null,"messageId":"394","endLine":38,"endColumn":19,"suppressions":"419"},{"ruleId":"420","severity":1,"message":"421","line":134,"column":8,"nodeType":"422","endLine":134,"endColumn":14,"suggestions":"423","suppressions":"424"},{"ruleId":"425","severity":2,"message":"426","line":122,"column":13,"nodeType":"427","messageId":"428","endLine":122,"endColumn":34},{"ruleId":"429","severity":1,"message":"430","line":62,"column":3,"nodeType":"400","endLine":66,"endColumn":5},{"ruleId":"431","severity":2,"message":"432","line":149,"column":9,"nodeType":"433","messageId":"434","endLine":149,"endColumn":37,"suppressions":"435"},{"ruleId":"420","severity":1,"message":"436","line":216,"column":6,"nodeType":"422","endLine":216,"endColumn":17,"suggestions":"437","suppressions":"438"},{"ruleId":"420","severity":1,"message":"439","line":226,"column":6,"nodeType":"422","endLine":237,"endColumn":4,"suggestions":"440","suppressions":"441"},{"ruleId":"392","severity":2,"message":"442","line":22,"column":10,"nodeType":null,"messageId":"394","endLine":22,"endColumn":22,"suppressions":"443"},{"ruleId":"392","severity":2,"message":"444","line":127,"column":9,"nodeType":null,"messageId":"394","endLine":127,"endColumn":29,"suppressions":"445"},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"403","line":1,"column":0},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"446","line":192,"column":19},{"ruleId":"392","severity":2,"message":"447","line":14,"column":9,"nodeType":null,"messageId":"394","endLine":14,"endColumn":18,"suppressions":"448"},{"ruleId":"429","severity":1,"message":"430","line":67,"column":9,"nodeType":"400","endLine":67,"endColumn":81,"suppressions":"449"},{"ruleId":"404","severity":2,"message":"405","line":14,"column":16,"nodeType":"406","messageId":"407","endLine":14,"endColumn":19,"suggestions":"450"},{"ruleId":"429","severity":1,"message":"430","line":29,"column":11,"nodeType":"400","endLine":36,"endColumn":13},{"ruleId":"392","severity":2,"message":"451","line":109,"column":51,"nodeType":null,"messageId":"394","endLine":109,"endColumn":55,"suppressions":"452"},{"ruleId":"420","severity":1,"message":"453","line":154,"column":6,"nodeType":"422","endLine":154,"endColumn":44,"suggestions":"454","suppressions":"455"},{"ruleId":"456","severity":2,"message":"457","line":7,"column":18,"nodeType":"433","messageId":"458","endLine":7,"endColumn":28,"suggestions":"459","suppressions":"460"},{"ruleId":"429","severity":1,"message":"430","line":233,"column":7,"nodeType":"400","endLine":238,"endColumn":9},{"ruleId":"392","severity":2,"message":"461","line":46,"column":9,"nodeType":null,"messageId":"394","endLine":46,"endColumn":20,"suppressions":"462"},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"463","line":169,"column":5},"@typescript-eslint/no-unused-vars","'showChat' is assigned a value but never used.","unusedVar",["464"],"'setShowChat' is assigned a value but never used.",["465"],"@next/next/no-html-link-for-pages","Do not use an `` element to navigate to `/`. Use `` from `next/link` instead. See: https://nextjs.org/docs/messages/no-html-link-for-pages","JSXOpeningElement",["466"],"Parsing error: ',' expected.","Parsing error: Unexpected keyword or identifier.","@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["467","468"],["469","470"],["471","472"],"'useEffect' is defined but never used.","'setIsLoading' is assigned a value but never used.","'categories' is assigned a value but never used.","'loading' is assigned a value but never used.",["473"],"'error' is assigned a value but never used.",["474"],"'success' is assigned a value but never used.",["475"],"react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'submitAssignment'. Either include it or remove the dependency array.","ArrayExpression",["476"],["477"],"react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","noDuplicateProps","@next/next/no-img-element","Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element","prefer-const","'program' is never reassigned. Use 'const' instead.","Identifier","useConst",["478"],"React Hook useEffect has missing dependencies: 'blend' and 'colorStops'. Either include them or remove the dependency array.",["479"],["480"],"React Hook useEffect has a missing dependency: 'particleColors'. Either include it or remove the dependency array.",["481"],["482"],"'formatNumber' is defined but never used.",["483"],"'renderNumberSegments' is assigned a value but never used.",["484"],"Parsing error: Unexpected token. Did you mean `{'>'}` or `>`?","'container' is assigned a value but never used.",["485"],["486"],["487","488"],"'_ref' is defined but never used.",["489"],"React Hook useEffect has a missing dependency: 'parentRef'. Either include it or remove the dependency array.",["490"],["491"],"@typescript-eslint/no-empty-object-type","An interface declaring no members is equivalent to its supertype.","noEmptyInterfaceWithSuper",["492"],["493"],"'updateUsage' is assigned a value but never used.",["494"],"Parsing error: Declaration or statement expected.",{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"messageId":"497","fix":"498","desc":"499"},{"messageId":"500","fix":"501","desc":"502"},{"messageId":"497","fix":"503","desc":"499"},{"messageId":"500","fix":"504","desc":"502"},{"messageId":"497","fix":"505","desc":"499"},{"messageId":"500","fix":"506","desc":"502"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"desc":"507","fix":"508"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"desc":"509","fix":"510"},{"kind":"495","justification":"496"},{"desc":"511","fix":"512"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"messageId":"497","fix":"513","desc":"499"},{"messageId":"500","fix":"514","desc":"502"},{"kind":"495","justification":"496"},{"desc":"515","fix":"516"},{"kind":"495","justification":"496"},{"messageId":"517","fix":"518","desc":"519"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},"directive","","suggestUnknown",{"range":"520","text":"521"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"522","text":"523"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",{"range":"524","text":"521"},{"range":"525","text":"523"},{"range":"526","text":"521"},{"range":"527","text":"523"},"Update the dependencies array to be: [step, submitAssignment]",{"range":"528","text":"529"},"Update the dependencies array to be: [amplitude, blend, colorStops]",{"range":"530","text":"531"},"Update the dependencies array to be: [particleCount, particleSpread, speed, moveParticlesOnHover, particleHoverFactor, alphaParticles, particleBaseSize, sizeRandomness, cameraDistance, disableRotation, particleColors]",{"range":"532","text":"533"},{"range":"534","text":"521"},{"range":"535","text":"523"},"Update the dependencies array to be: [cycleCollisionDetected, containerRef, parentRef]",{"range":"536","text":"537"},"replaceEmptyInterfaceWithSuper",{"range":"538","text":"539"},"Replace empty interface with a type alias.",[972,975],"unknown",[972,975],"never",[544,547],[544,547],[1683,1686],[1683,1686],[4828,4834],"[step, submitAssignment]",[5923,5934],"[amplitude, blend, colorStops]",[6757,6966],"[particleCount, particleSpread, speed, moveParticlesOnHover, particleHoverFactor, alphaParticles, particleBaseSize, sizeRandomness, cameraDistance, disableRotation, particleColors]",[514,517],[514,517],[3688,3726],"[cycleCollisionDetected, containerRef, parentRef]",[230,307],"type InputProps = React.InputHTMLAttributes"] \ No newline at end of file diff --git a/src/app/auth/callback/route.ts b/src/app/auth/callback/route.ts new file mode 100644 index 0000000..9f8cbe6 --- /dev/null +++ b/src/app/auth/callback/route.ts @@ -0,0 +1,30 @@ +import { createClient } from '@supabase/supabase-js' +import { NextResponse } from 'next/server' +import type { NextRequest } from 'next/server' + +export async function GET(request: NextRequest) { + const requestUrl = new URL(request.url) + const code = requestUrl.searchParams.get('code') + const origin = requestUrl.origin + + if (code) { + const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL + const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY + + if (!supabaseUrl || !supabaseAnonKey) { + return NextResponse.redirect(`${origin}/sign?error=configuration`) + } + + const supabase = createClient(supabaseUrl, supabaseAnonKey) + + try { + await supabase.auth.exchangeCodeForSession(code) + } catch (error) { + console.error('Error exchanging code for session:', error) + return NextResponse.redirect(`${origin}/sign?error=auth_failed`) + } + } + + // URL to redirect to after sign in process completes + return NextResponse.redirect(`${origin}/dashboard`) +} diff --git a/src/components/signup.tsx b/src/components/signup.tsx index 3a9c94d..a36b595 100644 --- a/src/components/signup.tsx +++ b/src/components/signup.tsx @@ -65,7 +65,7 @@ export default function SignupFormDemo() { const { error } = await supabase.auth.signInWithOAuth({ provider: "google", options: { - redirectTo: `${window.location.origin}/dashboard`, + redirectTo: `${window.location.origin}/auth/callback`, }, }); if (error) throw error; From 629125d8cbd3e60cbe47d5d2e4a26cd1b88383d0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:12:49 +0000 Subject: [PATCH 4/6] Update configuration and documentation for OAuth setup Co-authored-by: kris70lesgo <170333495+kris70lesgo@users.noreply.github.com> --- .env.example | 3 +++ .eslintcache | 1 - .gitignore | 3 ++- README.md | 9 ++++++++- 4 files changed, 13 insertions(+), 3 deletions(-) delete mode 100644 .eslintcache diff --git a/.env.example b/.env.example index bd2e2bc..e36f706 100644 --- a/.env.example +++ b/.env.example @@ -6,6 +6,9 @@ RAZORPAY_KEY_SECRET=your_razorpay_secret # Supabase NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key +# Note: In Supabase Dashboard > Authentication > URL Configuration, add: +# - Site URL: https://your-production-domain.com (or http://localhost:3000 for dev) +# - Redirect URLs: https://your-production-domain.com/auth/callback (or http://localhost:3000/auth/callback for dev) # SMTP / Email SMTP_HOST=smtp.gmail.com diff --git a/.eslintcache b/.eslintcache deleted file mode 100644 index c7063fb..0000000 --- a/.eslintcache +++ /dev/null @@ -1 +0,0 @@ -[{"/home/runner/work/asHelp/asHelp/eslint.config.mjs":"1","/home/runner/work/asHelp/asHelp/next.config.ts":"2","/home/runner/work/asHelp/asHelp/postcss.config.mjs":"3","/home/runner/work/asHelp/asHelp/src/app/ai-generator/page.tsx":"4","/home/runner/work/asHelp/asHelp/src/app/api/chat-assignment/route.ts":"5","/home/runner/work/asHelp/asHelp/src/app/api/export-document/route.ts":"6","/home/runner/work/asHelp/asHelp/src/app/api/fetch-image/route.ts":"7","/home/runner/work/asHelp/asHelp/src/app/api/generate-assignment/route.ts":"8","/home/runner/work/asHelp/asHelp/src/app/api/notify/confirmation/route.ts":"9","/home/runner/work/asHelp/asHelp/src/app/api/order.ts":"10","/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/route.ts":"11","/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/verify/route.ts":"12","/home/runner/work/asHelp/asHelp/src/app/auth/callback/route.ts":"13","/home/runner/work/asHelp/asHelp/src/app/contact/page.tsx":"14","/home/runner/work/asHelp/asHelp/src/app/dashboard/page.tsx":"15","/home/runner/work/asHelp/asHelp/src/app/form/page.tsx":"16","/home/runner/work/asHelp/asHelp/src/app/layout.tsx":"17","/home/runner/work/asHelp/asHelp/src/app/page.tsx":"18","/home/runner/work/asHelp/asHelp/src/app/payment/page.tsx":"19","/home/runner/work/asHelp/asHelp/src/app/sign/page.tsx":"20","/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Aurora.tsx":"21","/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Particles.tsx":"22","/home/runner/work/asHelp/asHelp/src/components/BlurText.tsx":"23","/home/runner/work/asHelp/asHelp/src/components/SplitText.tsx":"24","/home/runner/work/asHelp/asHelp/src/components/VariableProximity.tsx":"25","/home/runner/work/asHelp/asHelp/src/components/animate-ui/ShinyText.tsx":"26","/home/runner/work/asHelp/asHelp/src/components/animate-ui/buttons/github-stars.tsx":"27","/home/runner/work/asHelp/asHelp/src/components/animate-ui/components/counter.tsx":"28","/home/runner/work/asHelp/asHelp/src/components/animate-ui/radix/checkbox.tsx":"29","/home/runner/work/asHelp/asHelp/src/components/animate-ui/text/sliding-number.tsx":"30","/home/runner/work/asHelp/asHelp/src/components/back-to-top.tsx":"31","/home/runner/work/asHelp/asHelp/src/components/button.tsx":"32","/home/runner/work/asHelp/asHelp/src/components/button2.tsx":"33","/home/runner/work/asHelp/asHelp/src/components/footer.tsx":"34","/home/runner/work/asHelp/asHelp/src/components/loader.tsx":"35","/home/runner/work/asHelp/asHelp/src/components/magicui/animated-shiny-text.tsx":"36","/home/runner/work/asHelp/asHelp/src/components/marqueewrap.tsx":"37","/home/runner/work/asHelp/asHelp/src/components/mwrap.tsx":"38","/home/runner/work/asHelp/asHelp/src/components/nav.tsx":"39","/home/runner/work/asHelp/asHelp/src/components/navbar1.tsx":"40","/home/runner/work/asHelp/asHelp/src/components/paybutton.tsx":"41","/home/runner/work/asHelp/asHelp/src/components/payment.tsx":"42","/home/runner/work/asHelp/asHelp/src/components/signup-form-demo.tsx":"43","/home/runner/work/asHelp/asHelp/src/components/signup.tsx":"44","/home/runner/work/asHelp/asHelp/src/components/skeletons/dashboardPageSkeleton.tsx":"45","/home/runner/work/asHelp/asHelp/src/components/skeletons/homePageSkeleton.tsx":"46","/home/runner/work/asHelp/asHelp/src/components/skeletons/signinPageSkeleton.tsx":"47","/home/runner/work/asHelp/asHelp/src/components/ui/GradientIconButton.tsx":"48","/home/runner/work/asHelp/asHelp/src/components/ui/avatar-circles.tsx":"49","/home/runner/work/asHelp/asHelp/src/components/ui/background-beams-with-collision.tsx":"50","/home/runner/work/asHelp/asHelp/src/components/ui/background-boxes.tsx":"51","/home/runner/work/asHelp/asHelp/src/components/ui/button.tsx":"52","/home/runner/work/asHelp/asHelp/src/components/ui/card.tsx":"53","/home/runner/work/asHelp/asHelp/src/components/ui/container-scroll-animation.tsx":"54","/home/runner/work/asHelp/asHelp/src/components/ui/container-text-flip.tsx":"55","/home/runner/work/asHelp/asHelp/src/components/ui/input.tsx":"56","/home/runner/work/asHelp/asHelp/src/components/ui/label.tsx":"57","/home/runner/work/asHelp/asHelp/src/components/ui/marquee.tsx":"58","/home/runner/work/asHelp/asHelp/src/components/ui/progress.tsx":"59","/home/runner/work/asHelp/asHelp/src/components/ui/resizable-navbar.tsx":"60","/home/runner/work/asHelp/asHelp/src/components/ui/select.tsx":"61","/home/runner/work/asHelp/asHelp/src/components/ui/textarea.tsx":"62","/home/runner/work/asHelp/asHelp/src/components/upload.tsx":"63","/home/runner/work/asHelp/asHelp/src/components/usage-tracker.tsx":"64","/home/runner/work/asHelp/asHelp/src/lib/document-utils.ts":"65","/home/runner/work/asHelp/asHelp/src/lib/mailer.ts":"66","/home/runner/work/asHelp/asHelp/src/lib/razorpay.ts":"67","/home/runner/work/asHelp/asHelp/src/lib/supabaseclient.ts":"68","/home/runner/work/asHelp/asHelp/src/lib/utils.ts":"69","/home/runner/work/asHelp/asHelp/src/types/assignment.ts":"70","/home/runner/work/asHelp/asHelp/tailwind.config.js":"71"},{"size":523,"mtime":1762182249508,"results":"72","hashOfConfig":"73"},{"size":133,"mtime":1762182249508,"results":"74","hashOfConfig":"75"},{"size":92,"mtime":1762182249509,"results":"76","hashOfConfig":"73"},{"size":24506,"mtime":1762182249522,"results":"77","hashOfConfig":"75"},{"size":3196,"mtime":1762182249522,"results":"78","hashOfConfig":"75"},{"size":898,"mtime":1762182249522,"results":"79","hashOfConfig":"75"},{"size":1536,"mtime":1762182249522,"results":"80","hashOfConfig":"75"},{"size":6558,"mtime":1762182249522,"results":"81","hashOfConfig":"75"},{"size":1117,"mtime":1762182249523,"results":"82","hashOfConfig":"75"},{"size":918,"mtime":1762182249523,"results":"83","hashOfConfig":"75"},{"size":692,"mtime":1762182249523,"results":"84","hashOfConfig":"75"},{"size":1816,"mtime":1762182249523,"results":"85","hashOfConfig":"75"},{"size":1008,"mtime":1762182475805,"results":"86","hashOfConfig":"75"},{"size":12059,"mtime":1762182249523,"results":"87","hashOfConfig":"75"},{"size":13811,"mtime":1762182249523,"results":"88","hashOfConfig":"75"},{"size":24579,"mtime":1762182249523,"results":"89","hashOfConfig":"75"},{"size":616,"mtime":1762182249523,"results":"90","hashOfConfig":"75"},{"size":9124,"mtime":1762182249523,"results":"91","hashOfConfig":"75"},{"size":383,"mtime":1762182249523,"results":"92","hashOfConfig":"75"},{"size":2667,"mtime":1762182249523,"results":"93","hashOfConfig":"75"},{"size":5997,"mtime":1762182249524,"results":"94","hashOfConfig":"75"},{"size":7122,"mtime":1762182249524,"results":"95","hashOfConfig":"75"},{"size":3681,"mtime":1762182249524,"results":"96","hashOfConfig":"75"},{"size":3385,"mtime":1762182249524,"results":"97","hashOfConfig":"75"},{"size":7309,"mtime":1762182249524,"results":"98","hashOfConfig":"75"},{"size":901,"mtime":1762182249524,"results":"99","hashOfConfig":"75"},{"size":8568,"mtime":1762182249524,"results":"100","hashOfConfig":"75"},{"size":2100,"mtime":1762182249524,"results":"101","hashOfConfig":"75"},{"size":2670,"mtime":1762182249524,"results":"102","hashOfConfig":"75"},{"size":6069,"mtime":1762182249524,"results":"103","hashOfConfig":"75"},{"size":1430,"mtime":1762182249524,"results":"104","hashOfConfig":"75"},{"size":1927,"mtime":1762182249524,"results":"105","hashOfConfig":"75"},{"size":1939,"mtime":1762182249524,"results":"106","hashOfConfig":"75"},{"size":10119,"mtime":1762182249524,"results":"107","hashOfConfig":"75"},{"size":2922,"mtime":1762182249524,"results":"108","hashOfConfig":"75"},{"size":1004,"mtime":1762182249524,"results":"109","hashOfConfig":"75"},{"size":2890,"mtime":1762182249524,"results":"110","hashOfConfig":"75"},{"size":4878,"mtime":1762182249524,"results":"111","hashOfConfig":"75"},{"size":3290,"mtime":1762182249525,"results":"112","hashOfConfig":"75"},{"size":3321,"mtime":1762182249525,"results":"113","hashOfConfig":"75"},{"size":5932,"mtime":1762182249525,"results":"114","hashOfConfig":"75"},{"size":20843,"mtime":1762182249525,"results":"115","hashOfConfig":"75"},{"size":5172,"mtime":1762182249525,"results":"116","hashOfConfig":"75"},{"size":10241,"mtime":1762182487934,"results":"117","hashOfConfig":"75"},{"size":4365,"mtime":1762182249525,"results":"118","hashOfConfig":"75"},{"size":2857,"mtime":1762182249525,"results":"119","hashOfConfig":"75"},{"size":1836,"mtime":1762182249525,"results":"120","hashOfConfig":"75"},{"size":3353,"mtime":1762182249525,"results":"121","hashOfConfig":"75"},{"size":1214,"mtime":1762182249525,"results":"122","hashOfConfig":"75"},{"size":6764,"mtime":1762182249525,"results":"123","hashOfConfig":"75"},{"size":2163,"mtime":1762182249525,"results":"124","hashOfConfig":"75"},{"size":2123,"mtime":1762182249525,"results":"125","hashOfConfig":"75"},{"size":1875,"mtime":1762182249525,"results":"126","hashOfConfig":"75"},{"size":2619,"mtime":1762182249525,"results":"127","hashOfConfig":"75"},{"size":3256,"mtime":1762182249525,"results":"128","hashOfConfig":"75"},{"size":2118,"mtime":1762182249525,"results":"129","hashOfConfig":"75"},{"size":620,"mtime":1762182249525,"results":"130","hashOfConfig":"75"},{"size":1698,"mtime":1762182249525,"results":"131","hashOfConfig":"75"},{"size":775,"mtime":1762182249525,"results":"132","hashOfConfig":"75"},{"size":8009,"mtime":1762182249526,"results":"133","hashOfConfig":"75"},{"size":5611,"mtime":1762182249526,"results":"134","hashOfConfig":"75"},{"size":833,"mtime":1762182249526,"results":"135","hashOfConfig":"75"},{"size":1149,"mtime":1762182249526,"results":"136","hashOfConfig":"75"},{"size":3257,"mtime":1762182249526,"results":"137","hashOfConfig":"75"},{"size":6327,"mtime":1762182249526,"results":"138","hashOfConfig":"75"},{"size":2280,"mtime":1762182249526,"results":"139","hashOfConfig":"75"},{"size":183,"mtime":1762182249526,"results":"140","hashOfConfig":"75"},{"size":517,"mtime":1762182249526,"results":"141","hashOfConfig":"75"},{"size":166,"mtime":1762182249526,"results":"142","hashOfConfig":"75"},{"size":519,"mtime":1762182249526,"results":"143","hashOfConfig":"75"},{"size":1423,"mtime":1762182249526,"results":"144","hashOfConfig":"73"},{"filePath":"145","messages":"146","suppressedMessages":"147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1bazwqp",{"filePath":"148","messages":"149","suppressedMessages":"150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"14vyhra",{"filePath":"151","messages":"152","suppressedMessages":"153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","suppressedMessages":"156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"157","messages":"158","suppressedMessages":"159","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"160","messages":"161","suppressedMessages":"162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"163","messages":"164","suppressedMessages":"165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","suppressedMessages":"168","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"169","messages":"170","suppressedMessages":"171","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"172","messages":"173","suppressedMessages":"174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"175","messages":"176","suppressedMessages":"177","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"178","messages":"179","suppressedMessages":"180","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"181","messages":"182","suppressedMessages":"183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"184","messages":"185","suppressedMessages":"186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"187","messages":"188","suppressedMessages":"189","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"190","messages":"191","suppressedMessages":"192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"193","messages":"194","suppressedMessages":"195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","suppressedMessages":"198","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"199","messages":"200","suppressedMessages":"201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","suppressedMessages":"204","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"205","messages":"206","suppressedMessages":"207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"208","messages":"209","suppressedMessages":"210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"211","messages":"212","suppressedMessages":"213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"214","messages":"215","suppressedMessages":"216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"217","messages":"218","suppressedMessages":"219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"220","messages":"221","suppressedMessages":"222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"223","messages":"224","suppressedMessages":"225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"226","messages":"227","suppressedMessages":"228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"229","messages":"230","suppressedMessages":"231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"232","messages":"233","suppressedMessages":"234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"235","messages":"236","suppressedMessages":"237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"238","messages":"239","suppressedMessages":"240","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"241","messages":"242","suppressedMessages":"243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","suppressedMessages":"246","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"247","messages":"248","suppressedMessages":"249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"250","messages":"251","suppressedMessages":"252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"253","messages":"254","suppressedMessages":"255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"256","messages":"257","suppressedMessages":"258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"259","messages":"260","suppressedMessages":"261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","suppressedMessages":"264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"265","messages":"266","suppressedMessages":"267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","suppressedMessages":"270","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"271","messages":"272","suppressedMessages":"273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","suppressedMessages":"276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"277","messages":"278","suppressedMessages":"279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","suppressedMessages":"282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"283","messages":"284","suppressedMessages":"285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"286","messages":"287","suppressedMessages":"288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"289","messages":"290","suppressedMessages":"291","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"292","messages":"293","suppressedMessages":"294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"295","messages":"296","suppressedMessages":"297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"298","messages":"299","suppressedMessages":"300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"301","messages":"302","suppressedMessages":"303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"304","messages":"305","suppressedMessages":"306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"307","messages":"308","suppressedMessages":"309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"310","messages":"311","suppressedMessages":"312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"313","messages":"314","suppressedMessages":"315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"316","messages":"317","suppressedMessages":"318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"319","messages":"320","suppressedMessages":"321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"322","messages":"323","suppressedMessages":"324","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"325","messages":"326","suppressedMessages":"327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"328","messages":"329","suppressedMessages":"330","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"331","messages":"332","suppressedMessages":"333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"334","messages":"335","suppressedMessages":"336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"337","messages":"338","suppressedMessages":"339","errorCount":1,"fatalErrorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"340","messages":"341","suppressedMessages":"342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"343","messages":"344","suppressedMessages":"345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"346","messages":"347","suppressedMessages":"348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"349","messages":"350","suppressedMessages":"351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"352","messages":"353","suppressedMessages":"354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"355","messages":"356","suppressedMessages":"357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/asHelp/asHelp/eslint.config.mjs",[],[],"/home/runner/work/asHelp/asHelp/next.config.ts",[],[],"/home/runner/work/asHelp/asHelp/postcss.config.mjs",[],[],"/home/runner/work/asHelp/asHelp/src/app/ai-generator/page.tsx",[],["358","359","360"],"/home/runner/work/asHelp/asHelp/src/app/api/chat-assignment/route.ts",["361"],[],"/home/runner/work/asHelp/asHelp/src/app/api/export-document/route.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/api/fetch-image/route.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/api/generate-assignment/route.ts",["362"],[],"/home/runner/work/asHelp/asHelp/src/app/api/notify/confirmation/route.ts",["363"],[],"/home/runner/work/asHelp/asHelp/src/app/api/order.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/route.ts",["364"],[],"/home/runner/work/asHelp/asHelp/src/app/api/razorpay/create-order/verify/route.ts",["365"],[],"/home/runner/work/asHelp/asHelp/src/app/auth/callback/route.ts",[],[],"/home/runner/work/asHelp/asHelp/src/app/contact/page.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/app/dashboard/page.tsx",["366","367","368"],[],"/home/runner/work/asHelp/asHelp/src/app/form/page.tsx",[],["369","370","371","372"],"/home/runner/work/asHelp/asHelp/src/app/layout.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/app/page.tsx",["373"],[],"/home/runner/work/asHelp/asHelp/src/app/payment/page.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/app/sign/page.tsx",["374"],[],"/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Aurora.tsx",[],["375","376"],"/home/runner/work/asHelp/asHelp/src/components/Backgrounds/Particles.tsx",[],["377"],"/home/runner/work/asHelp/asHelp/src/components/BlurText.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/SplitText.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/VariableProximity.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/ShinyText.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/buttons/github-stars.tsx",[],["378","379"],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/components/counter.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/radix/checkbox.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/animate-ui/text/sliding-number.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/back-to-top.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/button.tsx",["380"],[],"/home/runner/work/asHelp/asHelp/src/components/button2.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/footer.tsx",["381"],[],"/home/runner/work/asHelp/asHelp/src/components/loader.tsx",[],["382"],"/home/runner/work/asHelp/asHelp/src/components/magicui/animated-shiny-text.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/marqueewrap.tsx",[],["383"],"/home/runner/work/asHelp/asHelp/src/components/mwrap.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/nav.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/navbar1.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/paybutton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/payment.tsx",["384"],[],"/home/runner/work/asHelp/asHelp/src/components/signup-form-demo.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/signup.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/skeletons/dashboardPageSkeleton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/skeletons/homePageSkeleton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/skeletons/signinPageSkeleton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/GradientIconButton.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/avatar-circles.tsx",["385"],[],"/home/runner/work/asHelp/asHelp/src/components/ui/background-beams-with-collision.tsx",[],["386","387"],"/home/runner/work/asHelp/asHelp/src/components/ui/background-boxes.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/button.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/card.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/container-scroll-animation.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/container-text-flip.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/input.tsx",[],["388"],"/home/runner/work/asHelp/asHelp/src/components/ui/label.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/marquee.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/progress.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/resizable-navbar.tsx",["389"],[],"/home/runner/work/asHelp/asHelp/src/components/ui/select.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/ui/textarea.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/upload.tsx",[],[],"/home/runner/work/asHelp/asHelp/src/components/usage-tracker.tsx",[],["390"],"/home/runner/work/asHelp/asHelp/src/lib/document-utils.ts",["391"],[],"/home/runner/work/asHelp/asHelp/src/lib/mailer.ts",[],[],"/home/runner/work/asHelp/asHelp/src/lib/razorpay.ts",[],[],"/home/runner/work/asHelp/asHelp/src/lib/supabaseclient.ts",[],[],"/home/runner/work/asHelp/asHelp/src/lib/utils.ts",[],[],"/home/runner/work/asHelp/asHelp/src/types/assignment.ts",[],[],"/home/runner/work/asHelp/asHelp/tailwind.config.js",[],[],{"ruleId":"392","severity":2,"message":"393","line":37,"column":10,"nodeType":null,"messageId":"394","endLine":37,"endColumn":18,"suppressions":"395"},{"ruleId":"392","severity":2,"message":"396","line":37,"column":20,"nodeType":null,"messageId":"394","endLine":37,"endColumn":31,"suppressions":"397"},{"ruleId":"398","severity":2,"message":"399","line":200,"column":13,"nodeType":"400","endLine":200,"endColumn":88,"suppressions":"401"},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"402","line":83,"column":6},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"403","line":109,"column":4},{"ruleId":"404","severity":2,"message":"405","line":27,"column":17,"nodeType":"406","messageId":"407","endLine":27,"endColumn":20,"suggestions":"408"},{"ruleId":"404","severity":2,"message":"405","line":17,"column":17,"nodeType":"406","messageId":"407","endLine":17,"endColumn":20,"suggestions":"409"},{"ruleId":"404","severity":2,"message":"405","line":52,"column":17,"nodeType":"406","messageId":"407","endLine":52,"endColumn":20,"suggestions":"410"},{"ruleId":"392","severity":2,"message":"411","line":2,"column":27,"nodeType":null,"messageId":"394","endLine":2,"endColumn":36},{"ruleId":"392","severity":2,"message":"412","line":74,"column":21,"nodeType":null,"messageId":"394","endLine":74,"endColumn":33},{"ruleId":"392","severity":2,"message":"413","line":138,"column":9,"nodeType":null,"messageId":"394","endLine":138,"endColumn":19},{"ruleId":"392","severity":2,"message":"414","line":34,"column":12,"nodeType":null,"messageId":"394","endLine":34,"endColumn":19,"suppressions":"415"},{"ruleId":"392","severity":2,"message":"416","line":36,"column":12,"nodeType":null,"messageId":"394","endLine":36,"endColumn":17,"suppressions":"417"},{"ruleId":"392","severity":2,"message":"418","line":38,"column":12,"nodeType":null,"messageId":"394","endLine":38,"endColumn":19,"suppressions":"419"},{"ruleId":"420","severity":1,"message":"421","line":134,"column":8,"nodeType":"422","endLine":134,"endColumn":14,"suggestions":"423","suppressions":"424"},{"ruleId":"425","severity":2,"message":"426","line":122,"column":13,"nodeType":"427","messageId":"428","endLine":122,"endColumn":34},{"ruleId":"429","severity":1,"message":"430","line":62,"column":3,"nodeType":"400","endLine":66,"endColumn":5},{"ruleId":"431","severity":2,"message":"432","line":149,"column":9,"nodeType":"433","messageId":"434","endLine":149,"endColumn":37,"suppressions":"435"},{"ruleId":"420","severity":1,"message":"436","line":216,"column":6,"nodeType":"422","endLine":216,"endColumn":17,"suggestions":"437","suppressions":"438"},{"ruleId":"420","severity":1,"message":"439","line":226,"column":6,"nodeType":"422","endLine":237,"endColumn":4,"suggestions":"440","suppressions":"441"},{"ruleId":"392","severity":2,"message":"442","line":22,"column":10,"nodeType":null,"messageId":"394","endLine":22,"endColumn":22,"suppressions":"443"},{"ruleId":"392","severity":2,"message":"444","line":127,"column":9,"nodeType":null,"messageId":"394","endLine":127,"endColumn":29,"suppressions":"445"},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"403","line":1,"column":0},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"446","line":192,"column":19},{"ruleId":"392","severity":2,"message":"447","line":14,"column":9,"nodeType":null,"messageId":"394","endLine":14,"endColumn":18,"suppressions":"448"},{"ruleId":"429","severity":1,"message":"430","line":67,"column":9,"nodeType":"400","endLine":67,"endColumn":81,"suppressions":"449"},{"ruleId":"404","severity":2,"message":"405","line":14,"column":16,"nodeType":"406","messageId":"407","endLine":14,"endColumn":19,"suggestions":"450"},{"ruleId":"429","severity":1,"message":"430","line":29,"column":11,"nodeType":"400","endLine":36,"endColumn":13},{"ruleId":"392","severity":2,"message":"451","line":109,"column":51,"nodeType":null,"messageId":"394","endLine":109,"endColumn":55,"suppressions":"452"},{"ruleId":"420","severity":1,"message":"453","line":154,"column":6,"nodeType":"422","endLine":154,"endColumn":44,"suggestions":"454","suppressions":"455"},{"ruleId":"456","severity":2,"message":"457","line":7,"column":18,"nodeType":"433","messageId":"458","endLine":7,"endColumn":28,"suggestions":"459","suppressions":"460"},{"ruleId":"429","severity":1,"message":"430","line":233,"column":7,"nodeType":"400","endLine":238,"endColumn":9},{"ruleId":"392","severity":2,"message":"461","line":46,"column":9,"nodeType":null,"messageId":"394","endLine":46,"endColumn":20,"suppressions":"462"},{"ruleId":null,"nodeType":null,"fatal":true,"severity":2,"message":"463","line":169,"column":5},"@typescript-eslint/no-unused-vars","'showChat' is assigned a value but never used.","unusedVar",["464"],"'setShowChat' is assigned a value but never used.",["465"],"@next/next/no-html-link-for-pages","Do not use an `` element to navigate to `/`. Use `` from `next/link` instead. See: https://nextjs.org/docs/messages/no-html-link-for-pages","JSXOpeningElement",["466"],"Parsing error: ',' expected.","Parsing error: Unexpected keyword or identifier.","@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["467","468"],["469","470"],["471","472"],"'useEffect' is defined but never used.","'setIsLoading' is assigned a value but never used.","'categories' is assigned a value but never used.","'loading' is assigned a value but never used.",["473"],"'error' is assigned a value but never used.",["474"],"'success' is assigned a value but never used.",["475"],"react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'submitAssignment'. Either include it or remove the dependency array.","ArrayExpression",["476"],["477"],"react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","noDuplicateProps","@next/next/no-img-element","Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element","prefer-const","'program' is never reassigned. Use 'const' instead.","Identifier","useConst",["478"],"React Hook useEffect has missing dependencies: 'blend' and 'colorStops'. Either include them or remove the dependency array.",["479"],["480"],"React Hook useEffect has a missing dependency: 'particleColors'. Either include it or remove the dependency array.",["481"],["482"],"'formatNumber' is defined but never used.",["483"],"'renderNumberSegments' is assigned a value but never used.",["484"],"Parsing error: Unexpected token. Did you mean `{'>'}` or `>`?","'container' is assigned a value but never used.",["485"],["486"],["487","488"],"'_ref' is defined but never used.",["489"],"React Hook useEffect has a missing dependency: 'parentRef'. Either include it or remove the dependency array.",["490"],["491"],"@typescript-eslint/no-empty-object-type","An interface declaring no members is equivalent to its supertype.","noEmptyInterfaceWithSuper",["492"],["493"],"'updateUsage' is assigned a value but never used.",["494"],"Parsing error: Declaration or statement expected.",{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"messageId":"497","fix":"498","desc":"499"},{"messageId":"500","fix":"501","desc":"502"},{"messageId":"497","fix":"503","desc":"499"},{"messageId":"500","fix":"504","desc":"502"},{"messageId":"497","fix":"505","desc":"499"},{"messageId":"500","fix":"506","desc":"502"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"desc":"507","fix":"508"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"desc":"509","fix":"510"},{"kind":"495","justification":"496"},{"desc":"511","fix":"512"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},{"messageId":"497","fix":"513","desc":"499"},{"messageId":"500","fix":"514","desc":"502"},{"kind":"495","justification":"496"},{"desc":"515","fix":"516"},{"kind":"495","justification":"496"},{"messageId":"517","fix":"518","desc":"519"},{"kind":"495","justification":"496"},{"kind":"495","justification":"496"},"directive","","suggestUnknown",{"range":"520","text":"521"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"522","text":"523"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",{"range":"524","text":"521"},{"range":"525","text":"523"},{"range":"526","text":"521"},{"range":"527","text":"523"},"Update the dependencies array to be: [step, submitAssignment]",{"range":"528","text":"529"},"Update the dependencies array to be: [amplitude, blend, colorStops]",{"range":"530","text":"531"},"Update the dependencies array to be: [particleCount, particleSpread, speed, moveParticlesOnHover, particleHoverFactor, alphaParticles, particleBaseSize, sizeRandomness, cameraDistance, disableRotation, particleColors]",{"range":"532","text":"533"},{"range":"534","text":"521"},{"range":"535","text":"523"},"Update the dependencies array to be: [cycleCollisionDetected, containerRef, parentRef]",{"range":"536","text":"537"},"replaceEmptyInterfaceWithSuper",{"range":"538","text":"539"},"Replace empty interface with a type alias.",[972,975],"unknown",[972,975],"never",[544,547],[544,547],[1683,1686],[1683,1686],[4828,4834],"[step, submitAssignment]",[5923,5934],"[amplitude, blend, colorStops]",[6757,6966],"[particleCount, particleSpread, speed, moveParticlesOnHover, particleHoverFactor, alphaParticles, particleBaseSize, sizeRandomness, cameraDistance, disableRotation, particleColors]",[514,517],[514,517],[3688,3726],"[cycleCollisionDetected, containerRef, parentRef]",[230,307],"type InputProps = React.InputHTMLAttributes"] \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2515836..d8666fb 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,5 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts -.eslintcache.env.local +# eslint cache +.eslintcache diff --git a/README.md b/README.md index 51715b9..33f7ed6 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,14 @@ 4. **Supabase Setup** - Create a new project at [Supabase Dashboard](https://supabase.com/dashboard) - - Enable Authentication providers (Email, etc.) + - Enable Authentication providers: + * Go to Authentication > Providers + * Enable Email provider + * Enable Google OAuth provider and configure with your Google OAuth credentials + - Configure Authentication URLs: + * Go to Authentication > URL Configuration + * Add your Site URL (e.g., `https://your-domain.com` or `http://localhost:3000`) + * Add Redirect URL: `https://your-domain.com/auth/callback` (or `http://localhost:3000/auth/callback` for development) - Create storage bucket: `assignments` 5. **Run the development server** From 177449f5307542c204b9668abcb2d9ff1870abe5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:14:07 +0000 Subject: [PATCH 5/6] Enable PKCE flow and improve auth session handling Co-authored-by: kris70lesgo <170333495+kris70lesgo@users.noreply.github.com> --- src/app/auth/callback/route.ts | 9 +++++++-- src/lib/supabaseclient.ts | 9 ++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/app/auth/callback/route.ts b/src/app/auth/callback/route.ts index 9f8cbe6..fcc2b1c 100644 --- a/src/app/auth/callback/route.ts +++ b/src/app/auth/callback/route.ts @@ -15,10 +15,15 @@ export async function GET(request: NextRequest) { return NextResponse.redirect(`${origin}/sign?error=configuration`) } - const supabase = createClient(supabaseUrl, supabaseAnonKey) + const supabase = createClient(supabaseUrl, supabaseAnonKey, { + auth: { + flowType: 'pkce' + } + }) try { - await supabase.auth.exchangeCodeForSession(code) + const { error } = await supabase.auth.exchangeCodeForSession(code) + if (error) throw error } catch (error) { console.error('Error exchanging code for session:', error) return NextResponse.redirect(`${origin}/sign?error=auth_failed`) diff --git a/src/lib/supabaseclient.ts b/src/lib/supabaseclient.ts index c41d707..0d50d18 100644 --- a/src/lib/supabaseclient.ts +++ b/src/lib/supabaseclient.ts @@ -6,5 +6,12 @@ const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || 'placeholde // Only create client if we have valid environment variables export const supabase = supabaseUrl !== 'https://placeholder.supabase.co' && supabaseAnonKey !== 'placeholder-key' - ? createClient(supabaseUrl, supabaseAnonKey) + ? createClient(supabaseUrl, supabaseAnonKey, { + auth: { + flowType: 'pkce', + autoRefreshToken: true, + persistSession: true, + detectSessionInUrl: true + } + }) : null From 5311d9d73c7f06f393df4800400cf122007a4b9a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:15:27 +0000 Subject: [PATCH 6/6] Address code review feedback: improve error messages Co-authored-by: kris70lesgo <170333495+kris70lesgo@users.noreply.github.com> --- .gitignore | 2 +- src/app/auth/callback/route.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d8666fb..27d133f 100644 --- a/.gitignore +++ b/.gitignore @@ -41,5 +41,5 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts -# eslint cache +# cache files .eslintcache diff --git a/src/app/auth/callback/route.ts b/src/app/auth/callback/route.ts index fcc2b1c..12da7ec 100644 --- a/src/app/auth/callback/route.ts +++ b/src/app/auth/callback/route.ts @@ -12,7 +12,7 @@ export async function GET(request: NextRequest) { const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY if (!supabaseUrl || !supabaseAnonKey) { - return NextResponse.redirect(`${origin}/sign?error=configuration`) + return NextResponse.redirect(`${origin}/sign?error=missing_env_vars`) } const supabase = createClient(supabaseUrl, supabaseAnonKey, { @@ -26,7 +26,7 @@ export async function GET(request: NextRequest) { if (error) throw error } catch (error) { console.error('Error exchanging code for session:', error) - return NextResponse.redirect(`${origin}/sign?error=auth_failed`) + return NextResponse.redirect(`${origin}/sign?error=code_exchange_failed`) } }