server side cookies

This commit is contained in:
2025-03-02 15:27:38 +01:00
parent 2e9304ac27
commit 4fa0fadc45
4 changed files with 33 additions and 26 deletions
+12 -4
View File
@@ -30,14 +30,22 @@ export async function POST(req: NextRequest) {
await database.users.insertOne({ email, password, name, platforms: {} });
const sessionId = (await database.sessions.insertOne({ user: email }))
.insertedId;
const sessionId = await database.sessions.insertOne({ user: email });
return NextResponse.json(
const response = NextResponse.json(
{
message: 'ok',
sessionId,
},
{ status: 200 }
);
response.cookies.set('session_id', sessionId.toString(), {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'strict',
path: '/',
maxAge: 60 * 60 * 24, // 1 day
});
return response;
}
+21 -18
View File
@@ -53,7 +53,7 @@ export async function GET(req: NextRequest) {
export async function POST(req: NextRequest) {
const { email, password } = await req.json();
if (typeof email !== 'string' || typeof password !== 'string')
if (typeof email !== 'string' || typeof password !== 'string') {
return NextResponse.json(
{
message:
@@ -61,36 +61,39 @@ export async function POST(req: NextRequest) {
},
{ status: 400 }
);
}
const user = await database.users.findOne({ email });
if (!user)
if (!user || user.password !== password) {
return NextResponse.json(
{
message: 'Email does not exist',
message: 'Invalid email or password',
},
{ status: 401 }
);
}
if (user.password !== password)
return NextResponse.json(
{
message: 'Invalid password',
},
{ status: 401 }
);
const sessionId = new ObjectId();
await database.sessions.insertOne({
_id: sessionId,
user: user._id.toString(),
});
const _id = new ObjectId();
database.sessions
.insertOne({ _id, user: user._id.toString() })
.then((res) => {});
return NextResponse.json(
const response = NextResponse.json(
{
message: 'ok',
sessionId: _id.toString(),
},
{ status: 200 }
);
response.cookies.set('session_id', sessionId.toString(), {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'strict',
path: '/',
maxAge: 60 * 60 * 24, // 1 day
});
return response;
}
-3
View File
@@ -7,7 +7,6 @@ import { useToast } from '@/hooks/use-toast';
import axios from 'axios';
import Link from 'next/link';
import { useState } from 'react';
import cookies from 'js-cookie';
import { useRouter } from 'next/navigation';
export default function Login() {
@@ -25,8 +24,6 @@ export default function Login() {
})
).data;
cookies.set('session_id', sessionId);
router.replace('/dashboard');
} catch (err: any) {
toast({
-1
View File
@@ -52,7 +52,6 @@ export default function SignUp() {
password,
})
.then(async (response) => {
document.cookie = `session_id=${response.data.sessionId}`;
router.push('/dashboard');
})
.catch((err) => {