mirror of
https://github.com/ajnart/homarr.git
synced 2026-01-29 18:59:20 +01:00
* fix: restrict parts of manage navigation to admins * fix: restrict stats cards on manage home page * fix: restrict access to amount of certain stats for manage home * fix: restrict visibility of board create button * fix: restrict access to integration pages * fix: restrict access to tools pages for admins * fix: restrict access to user and group pages * test: adjust tests to match permission changes for routes * fix: remove certain pages from spotlight without admin * fix: app management not restricted
29 lines
996 B
TypeScript
29 lines
996 B
TypeScript
import type { Session } from "next-auth";
|
|
|
|
import type { IntegrationPermission } from "@homarr/definitions";
|
|
|
|
export interface IntegrationPermissionsProps {
|
|
userPermissions: {
|
|
permission: IntegrationPermission;
|
|
}[];
|
|
groupPermissions: {
|
|
permission: IntegrationPermission;
|
|
}[];
|
|
}
|
|
|
|
export const constructIntegrationPermissions = (integration: IntegrationPermissionsProps, session: Session | null) => {
|
|
const permissions = integration.userPermissions
|
|
.concat(integration.groupPermissions)
|
|
.map(({ permission }) => permission);
|
|
|
|
return {
|
|
hasFullAccess:
|
|
(session?.user.permissions.includes("integration-full-all") ?? false) || permissions.includes("full"),
|
|
hasInteractAccess:
|
|
permissions.includes("full") ||
|
|
permissions.includes("interact") ||
|
|
(session?.user.permissions.includes("integration-interact-all") ?? false),
|
|
hasUseAccess: permissions.length >= 1 || (session?.user.permissions.includes("integration-use-all") ?? false),
|
|
};
|
|
};
|