From 15af13bdf498c311d2e8dc58bf1dcfafc576b4c0 Mon Sep 17 00:00:00 2001 From: Faye Date: Fri, 27 Oct 2023 00:38:10 +0200 Subject: [PATCH] resset password fix --- app/api/user/editUser/[uniqueId]/route.js | 8 ++++---- app/api/user/editUserData/[uniqueId]/route.js | 6 +++--- app/api/user/editUserPassword/route.js | 20 ++++++++++++++----- app/api/user/resetPassword/route.js | 4 ++-- components/account/accountPage.js | 16 ++++++++++----- 5 files changed, 35 insertions(+), 19 deletions(-) diff --git a/app/api/user/editUser/[uniqueId]/route.js b/app/api/user/editUser/[uniqueId]/route.js index d46df5ec..8768e6e8 100644 --- a/app/api/user/editUser/[uniqueId]/route.js +++ b/app/api/user/editUser/[uniqueId]/route.js @@ -7,7 +7,7 @@ export async function PUT(request) { // Assume the last segment of the URL is the user ID const userId = request.url.split("/").pop(); - const requestBody = await request.json(); + const requestBody = await request.text(); if (!userId) { throw new Error("User ID is required"); @@ -22,7 +22,7 @@ export async function PUT(request) { Authorization: `Bearer ${process.env.DOMAIN_API_KEY}`, "Content-Type": "application/json", }, - body: JSON.stringify(requestBody), + body: requestBody, }); if (!response.ok) { @@ -30,8 +30,8 @@ export async function PUT(request) { } const data = await response.json(); - return NextResponse.json(data); + return NextResponse.json(data, { status: 200 }); } catch (error) { - return NextResponse.error(500, error.message); + return NextResponse.json(error.message, { status: 500 }); } } diff --git a/app/api/user/editUserData/[uniqueId]/route.js b/app/api/user/editUserData/[uniqueId]/route.js index 5ad97378..15c2325c 100644 --- a/app/api/user/editUserData/[uniqueId]/route.js +++ b/app/api/user/editUserData/[uniqueId]/route.js @@ -22,7 +22,7 @@ export async function PUT(request) { Authorization: `Bearer ${process.env.DOMAIN_API_KEY}`, "Content-Type": "application/json", }, - body: JSON.stringify(requestBody), + body: requestBody, }); if (!response.ok) { @@ -30,8 +30,8 @@ export async function PUT(request) { } const data = await response.json(); - return NextResponse.json(data); + return NextResponse.json(data, { status: 200 }); } catch (error) { - return NextResponse.error(500, error.message); + return NextResponse.json(error.message, { status: 500 }); } } diff --git a/app/api/user/editUserPassword/route.js b/app/api/user/editUserPassword/route.js index 268375bf..ab84346d 100644 --- a/app/api/user/editUserPassword/route.js +++ b/app/api/user/editUserPassword/route.js @@ -1,4 +1,5 @@ import { NextResponse } from "next/server"; +import { cookies } from "next/headers"; export const runtime = "edge"; @@ -6,8 +7,11 @@ export async function POST(request) { try { const requestBody = await request.json(); - if (!userId) { - throw new Error("User ID is required"); + const cookieStore = cookies(); + const jwtCookie = cookieStore.get("jwt"); + + if (!jwtCookie) { + return NextResponse.json({ error: "No JWT Token" }, { status: 403 }); } // Construct the URL for the external fetch @@ -16,19 +20,25 @@ export async function POST(request) { const response = await fetch(fetchURL, { method: "POST", headers: { - Authorization: `Bearer ${process.env.DOMAIN_API_KEY}`, + Authorization: `Bearer ${jwtCookie.value}`, "Content-Type": "application/json", }, body: JSON.stringify(requestBody), }); + if (response.status === 400) { + const data = await response.json(); + return NextResponse.json(data, { status: 400 }); + } + if (!response.ok) { throw new Error("Failed to update data"); } const data = await response.json(); - return NextResponse.json(data); + return NextResponse.json(data, { status: 200 }); } catch (error) { - return NextResponse.error(500, error.message); + console.log(error); + return NextResponse.json(error.message, { status: 500 }); } } diff --git a/app/api/user/resetPassword/route.js b/app/api/user/resetPassword/route.js index 59f0f62b..a6e182f9 100644 --- a/app/api/user/resetPassword/route.js +++ b/app/api/user/resetPassword/route.js @@ -23,8 +23,8 @@ export async function POST(request) { } const data = await response.json(); - return NextResponse.json(data); + return NextResponse.json(data, { status: 200 }); } catch (error) { - return NextResponse.error(500, error.message); + return NextResponse.json(error.message, { status: 500 }); } } diff --git a/components/account/accountPage.js b/components/account/accountPage.js index 36b24e56..a7807547 100644 --- a/components/account/accountPage.js +++ b/components/account/accountPage.js @@ -36,14 +36,14 @@ export default function AccountPage() { const handleSubmit = async (event) => { event.preventDefault(); - const userFormData = new FormData(); + let userFormData = {}; if (email.value) { - userFormData.append("email", email.value); + userFormData.email = email.value; } if (username_login.value) { - userFormData.append("username", username_login.value); + userFormData.username = username_login.value; } try { @@ -56,7 +56,10 @@ export default function AccountPage() { const userResponseUpdate = await fetch(`/api/user/editUser/${userId}`, { method: "PUT", - body: userFormData, + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(userFormData), }); if (userResponseUpdate.status === 200) { @@ -91,7 +94,10 @@ export default function AccountPage() { }), }); - if (response.ok) { + if (response.status === 400) { + const data = await response.json(); + alert(data.error.message); + } else if (response.ok) { alert("Password reset successful"); } else { alert("Password reset failed");