diff --git a/src/routes/v1/auth.ts b/src/routes/v1/auth.ts new file mode 100644 index 0000000..96c0e2d --- /dev/null +++ b/src/routes/v1/auth.ts @@ -0,0 +1,30 @@ +import { Request, Response, Router } from "express"; +import { validateSchema } from "@utils/error"; +import { loginValidation, tokenValidation } from "./validations/auth"; +import { login, logout } from "../../controller/auth"; + +const app: Router = Router(); + +app.post("/login", async (req: Request, res: Response) => { + if (validateSchema(res, loginValidation, req.body)) return; + + const session = await login(req.body, { ip: req.ip, userAgent: req.header("User-Agent") || "None" }); + if (session?.code) return res.json(session); + + res.header("Authorization", session?.token).json({ ...session, message: "Your session got successfully created" }); +}); + +app.post("/verify", (req: Request, res: Response) => { + // TODO: Integrate TOTP Verification +}); + +app.post("/logout", async (req: Request, res: Response) => { + if (validateSchema(res, tokenValidation, req.body)) return; + + const session = await logout(req.body.token); + if (session) return res.json(session); + + res.json({ message: "Your session got deleted successfully" }); +}); + +export default app; \ No newline at end of file