feat: enhance user login functionality by adding 'remember me' option for cookie persistence

This commit is contained in:
Julien Froidefond
2025-10-16 14:47:55 +02:00
parent 4209557768
commit ef4de29282
2 changed files with 4 additions and 4 deletions

View File

@@ -7,11 +7,11 @@ import { getErrorMessage } from "@/utils/errors";
import type { NextRequest } from "next/server"; import type { NextRequest } from "next/server";
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {
const { email, password } = await request.json(); const { email, password, remember } = await request.json();
try { try {
const userData: UserData = await AuthServerService.loginUser(email, password); const userData: UserData = await AuthServerService.loginUser(email, password);
await AuthServerService.setUserCookie(userData); await AuthServerService.setUserCookie(userData, remember);
return NextResponse.json({ return NextResponse.json({
message: "✅ Connexion réussie", message: "✅ Connexion réussie",

View File

@@ -67,7 +67,7 @@ export class AuthServerService {
return true; return true;
} }
static async setUserCookie(userData: UserData): Promise<void> { static async setUserCookie(userData: UserData, remember: boolean = false): Promise<void> {
// Encode user data in base64 // Encode user data in base64
const encodedUserData = Buffer.from(JSON.stringify(userData)).toString("base64"); const encodedUserData = Buffer.from(JSON.stringify(userData)).toString("base64");
@@ -78,7 +78,7 @@ export class AuthServerService {
secure: process.env.NODE_ENV === "production", secure: process.env.NODE_ENV === "production",
sameSite: "lax", sameSite: "lax",
path: "/", path: "/",
maxAge: 24 * 60 * 60, // 24 hours by default for new users maxAge: remember ? 30 * 24 * 60 * 60 : 24 * 60 * 60, // 30 days if remember, 24 hours otherwise
}); });
} }