1
0
Fork 0
polaris-task-force/src/utils/access-control/hasRoles.ts
Z8MB1E c0d00fc113 fix(auth): reject MCP API-key sessions in user auth paths
With the MCP plugin enabled, payload.auth() can return a
payload-mcp-api-keys doc instead of a User. Add an isPayloadUser
type guard and use it in every server action, page, and route that
treats the auth result as a real user, so API-key sessions can no
longer pass user auth checks. hasRoles now explicitly requires a
users-collection doc.
2026-08-25 12:27:35 -04:00

10 lines
348 B
TypeScript

import { PayloadMcpApiKey, User } from "@/payload-types";
export default function hasRoles(
roles: NonNullable<User["roles"]>,
user: User | PayloadMcpApiKey | null | undefined,
) {
if (!user || user.collection !== "users") return false;
return roles.some((role) => user.roles?.some((urole) => urole === role || urole === "developer"));
}