quivr/frontend/app/brains-management/[brainId]/components/BrainManagementTabs/utils/getBrainPermissions.ts
Zineb El Bachiri efe4e8ccb0
fix(brainManagement): fix shared brain access issue (#1641)
# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

fix/brain-management-shared-brain-access
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):
2023-11-16 19:57:02 +01:00

39 lines
973 B
TypeScript

import { UUID } from "crypto";
import { MinimalBrainForUser } from "@/lib/context/BrainProvider/types";
import { isUserBrainOwner } from "./isUserBrainEditor";
import { isUserBrainEditor } from "./isUserBrainOwner";
type GetBrainPermissionsProps = {
brainId?: UUID;
userAccessibleBrains: MinimalBrainForUser[];
};
export const getBrainPermissions = ({
brainId,
userAccessibleBrains,
}: GetBrainPermissionsProps): {
isPublicBrain: boolean;
hasEditRights: boolean;
isOwnedByCurrentUser: boolean;
} => {
const isOwnedByCurrentUser = isUserBrainOwner({
brainId,
userAccessibleBrains,
});
const userHasBrainEditorRights = isUserBrainEditor({
brainId,
userAccessibleBrains,
});
const isPublicBrain =
userAccessibleBrains.find((brain) => brain.id === brainId)?.status ===
"public";
const hasEditRights = isOwnedByCurrentUser || userHasBrainEditorRights;
return { isPublicBrain, hasEditRights, isOwnedByCurrentUser };
};