realworld-hono-drizzle
Version:
A RealWorld backend built with Hono and Drizzle
31 lines (25 loc) • 720 B
text/typescript
import { createMiddleware } from "hono/factory";
import { jwt } from "hono/jwt";
import { type InferOutput, number, object } from "valibot";
import type { ThisAppEnv } from "./factory.js";
export const JwtClaims = object({
id: number(),
});
export const jwtAuth = createMiddleware<{
Variables: { jwtPayload: InferOutput<typeof JwtClaims> };
Bindings: ThisAppEnv["Bindings"];
}>((c, next) => {
const jwtMiddleware = jwt({
secret: c.env.JWT_SECRET,
});
return jwtMiddleware(c, next);
});
export const exposeToken = createMiddleware<{
Variables: {
token: string | undefined;
};
}>(async (c, next) => {
const token = c.req.header("Authorization")?.split(" ")[1];
c.set("token", token);
await next();
});