From 6872fb51b28c02f45bff4c58255f274039386c1a Mon Sep 17 00:00:00 2001 From: lukman Date: Thu, 25 Jul 2024 10:07:26 +0800 Subject: [PATCH] feat : add api --- src/app/api/auth/get-user-by-cookies/route.ts | 18 ++++++++++++++++++ src/app/api/auth/login/route.ts | 9 +++++---- src/app/api/auth/logout/route.ts | 7 +++++++ src/app/api/auth/set-cookies/route.ts | 16 ++++++++++++++++ 4 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 src/app/api/auth/get-user-by-cookies/route.ts create mode 100644 src/app/api/auth/logout/route.ts create mode 100644 src/app/api/auth/set-cookies/route.ts diff --git a/src/app/api/auth/get-user-by-cookies/route.ts b/src/app/api/auth/get-user-by-cookies/route.ts new file mode 100644 index 0000000..add8676 --- /dev/null +++ b/src/app/api/auth/get-user-by-cookies/route.ts @@ -0,0 +1,18 @@ +import { prisma, pwd_key_config } from "@/module/_global"; +import { unsealData } from "iron-session"; +import { cookies } from "next/headers"; + +export async function GET() { + const sessionCookie = cookies().get("sessionCookie"); + const userId = await unsealData(sessionCookie!.value, { + password: pwd_key_config, + }); + + const user = await prisma.user.findUnique({ + where: { + id: String(userId), + }, + }); + + return Response.json(user); +} diff --git a/src/app/api/auth/login/route.ts b/src/app/api/auth/login/route.ts index 2432ae7..519f463 100644 --- a/src/app/api/auth/login/route.ts +++ b/src/app/api/auth/login/route.ts @@ -1,11 +1,12 @@ -import prisma from "@/module/_global/bin/prisma"; -import { Login } from "@/types/auth/login"; + +import { prisma } from "@/module/_global"; +import { ILogin } from "@/types"; import { NextRequest } from "next/server"; export async function POST(req: NextRequest) { - const { email }: Login = await req.json(); + const { phone }: ILogin = await req.json(); const user = await prisma.user.findUnique({ - where: { email, isActive: true }, + where: { phone, isActive: true }, select: { id: true, phone: true }, }); diff --git a/src/app/api/auth/logout/route.ts b/src/app/api/auth/logout/route.ts new file mode 100644 index 0000000..c17ef71 --- /dev/null +++ b/src/app/api/auth/logout/route.ts @@ -0,0 +1,7 @@ +import { cookies } from "next/headers"; + +export async function DELETE() { + cookies().delete('sessionCookie') + + return Response.json({ success: true }) +} \ No newline at end of file diff --git a/src/app/api/auth/set-cookies/route.ts b/src/app/api/auth/set-cookies/route.ts new file mode 100644 index 0000000..b201337 --- /dev/null +++ b/src/app/api/auth/set-cookies/route.ts @@ -0,0 +1,16 @@ +import { pwd_key_config } from "@/module/_global"; +import { sealData } from "iron-session"; +import { cookies } from "next/headers"; +import { redirect } from "next/navigation"; + +export async function POST(req: Request) { + const { user } = await req.json(); + const encryptedUserData = await sealData(user, { password: pwd_key_config }); + + cookies().set({ + name: "sessionCookie", + value: encryptedUserData, + }); + + return Response.json({ success: true }); +}