feat: implement authentication middleware and extend Express Request type

This commit is contained in:
2026-01-12 23:36:37 +03:00
parent 95c24b9925
commit 85153e8c02
2 changed files with 42 additions and 9 deletions
+33 -9
View File
@@ -1,13 +1,37 @@
import { Router } from "express";
import type { NextFunction, Request, Response } from "express";
import { verifyToken } from "../utils/jwt.js";
const router = Router();
export function authMiddleware(
req: Request,
_res: Response,
next: NextFunction,
) {
const authHeader = req.headers.authorization;
if (!authHeader || !authHeader.startsWith("Bearer ")) {
return next({
status: 401,
message: "Missing or invalid Authorization header",
});
}
router.post("/register", (_req, res) => {
res.status(501).json({ message: "Register endpoint not implemented yet." });
});
const token = authHeader.split(" ")[1];
router.post("/login", (_req, res) => {
res.status(501).json({ message: "Login endpoint not implemented yet." });
});
if (!token) {
return next({
status: 401,
message: "Missing token",
});
}
export default router;
try {
const payload = verifyToken(token);
req.user = payload;
next();
} catch {
next({
statusCode: 401,
message: "Invalid or expired token",
});
}
}
+9
View File
@@ -0,0 +1,9 @@
import { JwtPayload } from "../utils/jwt.js";
declare global {
namespace Express {
interface Request {
user?: JwtPayload;
}
}
}