generated from nhcarrigan/template
a3daed1683
Sets up the full monorepo with pnpm workspaces. Includes shared types package, Hono API with Discord OAuth/JWT auth, Prisma v6 + MongoDB Atlas, and React + Vite frontend with game loop, five tabs, and Discord-linked save/load.
24 lines
661 B
TypeScript
24 lines
661 B
TypeScript
import type { Context, Next } from "hono";
|
|
import { verifyToken } from "../services/jwt.js";
|
|
|
|
export const authMiddleware = async (context: Context, next: Next): Promise<void> => {
|
|
const authorization = context.req.header("Authorization");
|
|
|
|
if (!authorization?.startsWith("Bearer ")) {
|
|
context.status(401);
|
|
context.json({ error: "Missing or invalid Authorization header" });
|
|
return;
|
|
}
|
|
|
|
const token = authorization.slice(7);
|
|
|
|
try {
|
|
const payload = verifyToken(token);
|
|
context.set("discordId", payload.discordId);
|
|
await next();
|
|
} catch {
|
|
context.status(401);
|
|
context.json({ error: "Invalid or expired token" });
|
|
}
|
|
};
|