CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /**
* Admin middleware — blocks non-admin users.
* Must be used AFTER softAuth or requireAuth.
*/
import { createMiddleware } from "hono/factory";
import type { AuthEnv } from "./auth";
export const requireAdmin = createMiddleware<AuthEnv>(async (c, next) => {
const user = c.get("user");
if (!user) {
return c.redirect(`/login?redirect=${encodeURIComponent(c.req.path)}`);
}
if (!user.isAdmin) {
return c.html(
`<html><body style="background:#0d1117;color:#e6edf3;font-family:sans-serif;display:flex;justify-content:center;align-items:center;height:100vh">
<div style="text-align:center">
<h1>403</h1>
<p>Admin access required.</p>
<a href="/" style="color:#58a6ff">Go home</a>
</div>
</body></html>`,
403
);
}
return next();
});
|