aboutsummaryrefslogtreecommitdiffstats
path: root/packages/api/middlewares/auth.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-12 23:37:52 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-12 23:37:52 +0000
commit1105b4a41b2a91a24a164c70264b294a80afe97b (patch)
tree8b6e695666a3449fa5ff374da16fdff5e7ce738d /packages/api/middlewares/auth.ts
parentba7a87fe68e18dca53cb21ebd1ff0bab7e3ab414 (diff)
downloadkarakeep-1105b4a41b2a91a24a164c70264b294a80afe97b.tar.zst
feat(api): Expose the update user API in the openapi specs
Diffstat (limited to 'packages/api/middlewares/auth.ts')
-rw-r--r--packages/api/middlewares/auth.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/api/middlewares/auth.ts b/packages/api/middlewares/auth.ts
index 42bca6c8..92f591ad 100644
--- a/packages/api/middlewares/auth.ts
+++ b/packages/api/middlewares/auth.ts
@@ -35,3 +35,25 @@ export const authMiddleware = createMiddleware<{
c.set("api", createCaller(c.get("ctx")));
await next();
});
+
+export const adminAuthMiddleware = createMiddleware<{
+ Variables: {
+ ctx: AuthedContext;
+ api: ReturnType<typeof createCaller>;
+ };
+}>(async (c, next) => {
+ if (!c.var.ctx || !c.var.ctx.user || c.var.ctx.user === null) {
+ throw new HTTPException(401, {
+ message: "Unauthorized",
+ });
+ }
+
+ if (c.var.ctx.user.role !== "admin") {
+ throw new HTTPException(403, {
+ message: "Forbidden - Admin access required",
+ });
+ }
+
+ c.set("api", createCaller(c.get("ctx")));
+ await next();
+});