Skip to content

Middlewares ​

What are Middlewares? ​

Middlewares are functions that execute before reaching the endpoint. They can be used to perform tasks such as authentication, logging, and more.

How to Create a Middleware ​

Middleware can be applied at Route level or Endpoint level.

ts
// Route level middleware
export const protectedRoute = publicRoute.middleware(async ctx => {
	const token = ctx.req.headers.authorization;
	if (!token) throw new RPCError({ code: 'UNAUTHORIZED' });

	const user = await getUserByToken(token);
	if (!user) throw new RPCError({ code: 'UNAUTHORIZED' });

	return { user };
});
ts
// Endpoint level middleware
export const createProduct = protectedRoute
	.middleware(ctx => {
		const { role } = ctx.user;
		if (role !== 'admin') throw new RPCError({ code: 'FORBIDDEN' });
	})
	.post(async ctx => {
		// we have access to user because the protectedRoute middleware returned us the user object.
		const { username } = ctx.user;
		console.log(`User ${username} is creating a product`);
	});

Released under the MIT License.