Replace entire codebase with homarr-labs/homarr
This commit is contained in:
28
packages/auth/permissions/integration-permissions.ts
Normal file
28
packages/auth/permissions/integration-permissions.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
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),
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user