Spaces:
Sleeping
Sleeping
File size: 1,254 Bytes
81d1e4c 9f5a703 81d1e4c 9f5a703 81d1e4c 9f5a703 81d1e4c 9f5a703 81d1e4c 9f5a703 81d1e4c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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");
}
}
|