31 lines
869 B
TypeScript
31 lines
869 B
TypeScript
import { Router } from "express";
|
|
import { ok } from "../../lib/api-response.js";
|
|
import { requireAuth } from "../../middleware/auth.js";
|
|
import { validateBody } from "../../middleware/validate.js";
|
|
import { loginSchema } from "./auth.schemas.js";
|
|
import { login, logout } from "./auth.service.js";
|
|
|
|
export const authRouter = Router();
|
|
|
|
authRouter.post("/login", validateBody(loginSchema), async (req, res, next) => {
|
|
try {
|
|
const user = await login(req, res, req.body.username, req.body.password);
|
|
res.json(ok({ user }));
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
});
|
|
|
|
authRouter.post("/logout", requireAuth, async (req, res, next) => {
|
|
try {
|
|
await logout(req, res);
|
|
res.json(ok({ loggedOut: true }));
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
});
|
|
|
|
authRouter.get("/session", requireAuth, async (req, res) => {
|
|
res.json(ok({ user: req.user }));
|
|
});
|