🔒 feat: RBAC for Multi-Convo Feature (#3964)

* fix: remove duplicate keys in German language translations

* wip: multi-convo role permissions

* ci: Update loadDefaultInterface tests due to MULTI_CONVO

* ci: update Role.spec.js with tests for MULTI_CONVO permission type

* fix: Update ContentParts component to handle undefined content array

* feat: render Multi-Convo based on UI permissions
This commit is contained in:
Danny Avila 2024-09-09 16:29:24 -04:00 committed by GitHub
parent d59b62174f
commit 748b41eda4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 302 additions and 56 deletions

View file

@ -46,10 +46,14 @@ const useHandleKeyUp = ({
setShowPlusPopover: SetterOrUpdater<boolean>;
setShowMentionPopover: SetterOrUpdater<boolean>;
}) => {
const hasAccess = useHasAccess({
const hasPromptsAccess = useHasAccess({
permissionType: PermissionTypes.PROMPTS,
permission: Permissions.USE,
});
const hasMultiConvoAccess = useHasAccess({
permissionType: PermissionTypes.MULTI_CONVO,
permission: Permissions.USE,
});
const setShowPromptsPopover = useSetRecoilState(store.showPromptsPopoverFamily(index));
// Get the current state of command toggles
@ -64,19 +68,22 @@ const useHandleKeyUp = ({
}, [textAreaRef, setShowMentionPopover, atCommandEnabled]);
const handlePlusCommand = useCallback(() => {
if (plusCommandEnabled && shouldTriggerCommand(textAreaRef, '+')) {
if (!hasMultiConvoAccess || !plusCommandEnabled) {
return;
}
if (shouldTriggerCommand(textAreaRef, '+')) {
setShowPlusPopover(true);
}
}, [textAreaRef, setShowPlusPopover, plusCommandEnabled]);
}, [textAreaRef, setShowPlusPopover, plusCommandEnabled, hasMultiConvoAccess]);
const handlePromptsCommand = useCallback(() => {
if (!hasAccess || !slashCommandEnabled) {
if (!hasPromptsAccess || !slashCommandEnabled) {
return;
}
if (shouldTriggerCommand(textAreaRef, '/')) {
setShowPromptsPopover(true);
}
}, [textAreaRef, hasAccess, setShowPromptsPopover, slashCommandEnabled]);
}, [textAreaRef, hasPromptsAccess, setShowPromptsPopover, slashCommandEnabled]);
const commandHandlers = useMemo(
() => ({