Move app to apps/web-react in pnpm workspace layout

This commit is contained in:
Kalle
2026-08-16 09:20:33 +03:00
parent 7e365ccfcf
commit bbc8ea57af
2913 changed files with 227 additions and 250 deletions

View File

@@ -0,0 +1,33 @@
import { requireUser } from "~/features/auth/core/user.server";
import type { EntityWithPermissions, Role } from "~/modules/permissions/types";
import { hasPermission } from "./utils";
/**
* Checks if a user has the required global role.
*
* @throws {Response} - Throws a 403 Forbidden response if the user does not have the required role.
*/
export function requireRole(role: Role) {
const user = requireUser();
if (!user.roles.includes(role)) {
throw new Response("Forbidden", { status: 403 });
}
}
/**
* Checks if a user has the required permission to perform an action on a given entity.
*
* @throws {Response} - Throws a 403 Forbidden response if the user does not have the required permission.
*/
export function requirePermission<
T extends EntityWithPermissions,
K extends keyof T["permissions"],
>(obj: T, permission: K) {
const user = requireUser();
if (hasPermission(obj, permission, user)) {
return;
}
throw new Response("Forbidden", { status: 403 });
}