Middlewares - nuthanc/microservice GitHub Wiki
Middlewares
- Middleware functions are functions that have access to the request object (req), the response object (res), and the next middleware function in the application’s request-response cycle
- Middlewares in the App in common/src/middlewares
- Examples of middleware
// current-user.ts
import { Request, Response, NextFunction } from 'express';
import jwt from 'jsonwebtoken';
interface UserPayload {
id: string;
email: string;
}
// Making changes to existing Type definition
declare global {
namespace Express {
interface Request {
currentUser?: UserPayload;
}
}
}
export const currentUser = (
req: Request,
res: Response,
next: NextFunction
) => {
if (!req.session?.jwt) {
return next();
}
try {
const payload = jwt.verify(
req.session.jwt,
process.env.JWT_KEY!
) as UserPayload;
req.currentUser = payload;
} catch (err) {}
next();
};
// require-auth.ts
import { Request, Response, NextFunction } from 'express';
import { NotAuthorizedError } from '../errors/not-authorized-error';
export const requireAuth = (
req: Request,
res: Response,
next: NextFunction
) => {
if (!req.currentUser) {
throw new NotAuthorizedError();
}
next();
};
// routes current-user.ts
import express from 'express';
import { currentUser } from '@rztickets/common';
const router = express.Router();
router.get('/api/users/currentuser', currentUser, (req, res) => {
res.send({ currentUser: req.currentUser || null });
});
export { router as currentUserRouter };