mirror of
https://github.com/ajnart/homarr.git
synced 2026-01-30 03:09:19 +01:00
* feat: add improved search * wip: add support for sorting, rename use-options to use-query-options, add use-options for local usage, add pages search group * feat: add help links from manage layout to help search mode * feat: add additional search engines * feat: add group search details * refactor: improve users search group type * feat: add apps search group, add disabled search interaction * feat: add integrations and boards for search * wip: hook issue with react * fix: hook issue regarding actions and interactions * chore: address pull request feedback * fix: format issues * feat: add additional global actions to search * chore: remove unused code * fix: search engine short key * fix: typecheck issues * fix: deepsource issues * fix: eslint issue * fix: lint issues * fix: unordered dependencies * chore: address pull request feedback
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import type { Session } from "next-auth";
|
|
|
|
import type { BoardPermission } from "@homarr/definitions";
|
|
|
|
export type BoardPermissionsProps = (
|
|
| {
|
|
creator: {
|
|
id: string;
|
|
} | null;
|
|
}
|
|
| {
|
|
creatorId: string | null;
|
|
}
|
|
) & {
|
|
userPermissions: {
|
|
permission: BoardPermission;
|
|
}[];
|
|
groupPermissions: {
|
|
permission: BoardPermission;
|
|
}[];
|
|
isPublic: boolean;
|
|
};
|
|
|
|
export const constructBoardPermissions = (board: BoardPermissionsProps, session: Session | null) => {
|
|
const creatorId = "creator" in board ? board.creator?.id : board.creatorId;
|
|
|
|
return {
|
|
hasFullAccess: session?.user.id === creatorId || (session?.user.permissions.includes("board-full-all") ?? false),
|
|
hasChangeAccess:
|
|
session?.user.id === creatorId ||
|
|
board.userPermissions.some(({ permission }) => permission === "modify") ||
|
|
board.groupPermissions.some(({ permission }) => permission === "modify") ||
|
|
(session?.user.permissions.includes("board-modify-all") ?? false) ||
|
|
(session?.user.permissions.includes("board-full-all") ?? false),
|
|
hasViewAccess:
|
|
session?.user.id === creatorId ||
|
|
board.userPermissions.length >= 1 ||
|
|
board.groupPermissions.length >= 1 ||
|
|
board.isPublic ||
|
|
(session?.user.permissions.includes("board-view-all") ?? false),
|
|
};
|
|
};
|