import { Request, Response } from "express"; import { AuthService } from "./auth.service"; import { ApiResponse } from "../../utils/apiResponse"; import { AuthRequest } from "../../types"; import { getCookieOptions } from "../../middleware/security"; const authService = new AuthService(); export class AuthController { async login(req: Request, res: Response) { const { email, password } = req.body; const ip = req.ip || req.socket.remoteAddress; const result = await authService.login(email, password, ip); res.cookie("token", result.token, getCookieOptions()); res.setHeader("X-Content-Type-Options", "nosniff"); res.setHeader("X-Frame-Options", "DENY"); res.setHeader("Cache-Control", "no-store"); return ApiResponse.success(res, result, "Login successful"); } async getProfile(req: AuthRequest, res: Response) { const ip = req.ip || req.socket.remoteAddress; const profile = await authService.getProfile(req.user!.id, ip); return ApiResponse.success(res, profile); } async logout(req: Request, res: Response) { res.clearCookie("token", getCookieOptions()); res.setHeader("Cache-Control", "no-store"); return ApiResponse.success(res, null, "Logged out successfully"); } }