diff --git a/frontend-next/src/app/api/login/route.js b/frontend-next/src/app/api/login/route.js index 0994af3..e0c9366 100644 --- a/frontend-next/src/app/api/login/route.js +++ b/frontend-next/src/app/api/login/route.js @@ -27,6 +27,14 @@ async function handleEmailAndPassword(email, password) { secure: true, }; cookies().set(options); + var uid_options = { + name: "uid", + value: userCredential.user.uid, + maxAge: expiresIn, // 20 mins + httpOnly: true, + secure: true, + }; + cookies().set(uid_options); return NextResponse.json({ options }, { status: 200 }); } } diff --git a/frontend-next/src/app/api/onboard/route.js b/frontend-next/src/app/api/onboard/route.js index a4eab8f..4c177a8 100644 --- a/frontend-next/src/app/api/onboard/route.js +++ b/frontend-next/src/app/api/onboard/route.js @@ -34,7 +34,6 @@ export async function POST(req, res) { var { firstName, lastName } = await req?.json() return await onboard(firstName, lastName, req); } catch (error) { - console.log(error) return NextResponse.json({ error: "Internal Server Error" },{ status: 500 }); } } \ No newline at end of file diff --git a/frontend-next/src/app/api/user/route.js b/frontend-next/src/app/api/user/route.js index d2f9aa6..d521841 100644 --- a/frontend-next/src/app/api/user/route.js +++ b/frontend-next/src/app/api/user/route.js @@ -1,15 +1,37 @@ import { NextResponse } from "next/server"; import { cookies } from "next/headers"; +import { app } from "../firebase-config"; +import { getDatabase, ref, get as firebaseGet } from "firebase/database"; + +export async function POST(req,res) { + var uid = await req?.json() + var database = getDatabase(app) + var user = await firebaseGet(ref(database, `users/${uid}`)); + if (!user.exists()) { + return NextResponse.json({ + firstName: "not-found", + lastName: "not-found", + uid: "not-found", + }); + } else { + cookies().set("firstName",user.val()?.firstName) + cookies().set("lastName",user.val()?.lastName) + cookies().set("uid",uid) + return NextResponse.json({ + firstName: user.val()?.firstName, + lastName: user.val()?.lastName, + uid: uid, + }) + } + } export async function GET(req) { - const session = cookies().get("session"); - // Login if not logged in - if (session) { - return NextResponse.json({ - firstName: cookies().get("firstName")?.value, - lastName: cookies().get("lastName")?.value, - uid: cookies().get("uid")?.value, - }) - } - return NextResponse.json({}, { status: 500 }); - } \ No newline at end of file + var uid = cookies().get("uid")?.value + var database = getDatabase(app) + var user = await firebaseGet(ref(database, `users/${uid}`)); + return NextResponse.json({ + firstName: user.val()?.firstName, + lastName: user.val()?.lastName, + uid: cookies().get("uid")?.value, + }) +} \ No newline at end of file diff --git a/frontend-next/src/app/app/page.js b/frontend-next/src/app/app/page.js index e7805e9..5335e92 100644 --- a/frontend-next/src/app/app/page.js +++ b/frontend-next/src/app/app/page.js @@ -38,7 +38,6 @@ function Geo() { // Retrieve latitude & longitude coordinates from `navigator.geolocation` Web API navigator.geolocation.getCurrentPosition(({ coords }) => { const { latitude, longitude } = coords; - console.log(latitude, longitude) setData(coords) setLoading(false) }) diff --git a/frontend-next/src/middleware.js b/frontend-next/src/middleware.js index abef4f5..ec53106 100644 --- a/frontend-next/src/middleware.js +++ b/frontend-next/src/middleware.js @@ -1,7 +1,6 @@ // src/middleware.js import { NextResponse } from "next/server"; -import { app } from "./app/api/firebase-config"; -import { getDatabase, ref, get as firebaseGet } from "firebase/database"; +import { cookies } from "next/headers"; export async function middleware(req, res) { const session = req.cookies.get("session"); @@ -15,27 +14,23 @@ export async function middleware(req, res) { Cookie: `session=${session?.value}`, }, }); + // Login if unauthorized if (responseAPI.status !== 200) { return NextResponse.redirect(new URL("/login", req.url)); } + // If new user, redirect to onboarding var { uid } = await responseAPI.json() - var firstName = await req.cookies.get("firstName")?.value; - if (firstName) { + var user = await fetch(new URL("/api/user", req.url), { + method: "POST", + body: JSON.stringify(uid ? uid : {}), + }); + user = await user.json(); + if (user.firstName !== "not-found") { return NextResponse.next(); } else { - var database = getDatabase(app) - var user = await firebaseGet(ref(database, `users/${uid}`)); - if (!user.exists()) { - return NextResponse.redirect(new URL("/onboarding", req.url)); - } else { - var returnedResponse = NextResponse.next(); - returnedResponse.cookies.set("firstName",user.val()?.firstName) - returnedResponse.cookies.set("lastName",user.val()?.lastName) - returnedResponse.cookies.set("uid",uid) - return returnedResponse - } + return NextResponse.redirect(new URL("/onboarding", req.url)); } }