From 59423172224a40b060fa3463217aaefb83791ac6 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Mon, 4 May 2026 20:35:36 +0200 Subject: [PATCH] feat(core-shared): add isAdmin access helper --- .../src/payload/access/is-admin.test.ts | 20 +++++++++++++++++++ .../src/payload/access/is-admin.ts | 7 +++++++ 2 files changed, 27 insertions(+) create mode 100644 packages/core-shared/src/payload/access/is-admin.test.ts create mode 100644 packages/core-shared/src/payload/access/is-admin.ts diff --git a/packages/core-shared/src/payload/access/is-admin.test.ts b/packages/core-shared/src/payload/access/is-admin.test.ts new file mode 100644 index 0000000..a8f9456 --- /dev/null +++ b/packages/core-shared/src/payload/access/is-admin.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, it } from "vitest"; +import { isAdmin } from "./is-admin"; + +describe("isAdmin", () => { + it("returns true when user role is 'admin'", () => { + expect(isAdmin({ req: { user: { role: "admin" } } })).toBe(true); + }); + + it("returns false when user role is not 'admin'", () => { + expect(isAdmin({ req: { user: { role: "editor" } } })).toBe(false); + }); + + it("returns false when user has no role", () => { + expect(isAdmin({ req: { user: {} } })).toBe(false); + }); + + it("returns false when there is no user", () => { + expect(isAdmin({ req: {} })).toBe(false); + }); +}); diff --git a/packages/core-shared/src/payload/access/is-admin.ts b/packages/core-shared/src/payload/access/is-admin.ts new file mode 100644 index 0000000..3b480b2 --- /dev/null +++ b/packages/core-shared/src/payload/access/is-admin.ts @@ -0,0 +1,7 @@ +export function isAdmin({ + req, +}: { + req: { user?: { role?: string } }; +}): boolean { + return req.user?.role === "admin"; +}