From 21959a66f72edc8768210850f595853d16d6d289 Mon Sep 17 00:00:00 2001 From: Jacob Shandling <61553566+jacobshandling@users.noreply.github.com> Date: Fri, 30 Jun 2023 16:46:03 -0700 Subject: [PATCH] Correct live query editor permissions (#12609) ## Addresses #12607 - Updated permissions for the FleetAce editor when being viewed by an Observer+ to allow editing _only_ for a new live query to run https://www.loom.com/share/2e4569c1c10f4e4a9b322f24fb4a1be2?sid=c30b630b-d302-4596-a8b7-dfb694e22ba0 --------- Co-authored-by: Jacob Shandling --- .../components/QueryForm/QueryForm.tsx | 26 ++++++++++--------- frontend/utilities/permissions/permissions.ts | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tsx b/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tsx index 6e5f0799ba..a503e00d47 100644 --- a/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tsx +++ b/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tsx @@ -102,7 +102,7 @@ const QueryForm = ({ } = useContext(AppContext); const { renderFlash } = useContext(NotificationContext); - const isEditMode = !!queryIdForEdit; + const savedQueryMode = !!queryIdForEdit; const [errors, setErrors] = useState<{ [key: string]: any }>({}); // string | null | undefined or boolean | undefined const [isSaveModalOpen, setIsSaveModalOpen] = useState(false); const [showQueryEditor, setShowQueryEditor] = useState( @@ -135,7 +135,7 @@ const QueryForm = ({ debounceSQL(lastEditedQueryBody); }, [lastEditedQueryBody, lastEditedQueryId]); - const hasTeamMaintainerPermissions = isEditMode + const hasTeamMaintainerPermissions = savedQueryMode ? isAnyTeamMaintainerOrTeamAdmin && storedQuery && currentUser && @@ -180,7 +180,7 @@ const QueryForm = ({ ) => { evt.preventDefault(); - if (isEditMode && !lastEditedQueryName) { + if (savedQueryMode && !lastEditedQueryName) { return setErrors({ ...errors, name: "Query name must be present", @@ -248,7 +248,7 @@ const QueryForm = ({ const promptSaveQuery = () => (evt: React.MouseEvent) => { evt.preventDefault(); - if (isEditMode && !lastEditedQueryName) { + if (savedQueryMode && !lastEditedQueryName) { return setErrors({ ...errors, name: "Query name must be present", @@ -261,7 +261,7 @@ const QueryForm = ({ valid = isValidated; if (valid) { - if (!isEditMode) { + if (!savedQueryMode) { setIsSaveModalOpen(true); } else { onUpdate({ @@ -327,7 +327,7 @@ const QueryForm = ({ }); const renderName = () => { - if (isEditMode) { + if (savedQueryMode) { return ( <>
@@ -363,7 +363,7 @@ const QueryForm = ({ }; const renderDescription = () => { - if (isEditMode) { + if (savedQueryMode) { return ( <>
@@ -424,7 +424,9 @@ const QueryForm = ({ name="query editor" label="Query" wrapperClassName={`${baseClass}__text-editor-wrapper`} - readOnly={!isObserverPlus || !isAnyTeamObserverPlus} + readOnly={ + (!isObserverPlus && !isAnyTeamObserverPlus) || savedQueryMode + } labelActionComponent={isObserverPlus && renderLabelComponent()} wrapEnabled /> @@ -459,7 +461,7 @@ const QueryForm = ({ {renderName()} {renderDescription()}
-
{isEditMode && renderAuthor()}
+
{savedQueryMode && renderAuthor()}
{renderPlatformCompatibility()} - {isEditMode && ( + {savedQueryMode && ( <> {(hasSavePermissions || isAnyTeamMaintainerOrTeamAdmin) && ( <> - {isEditMode && ( + {savedQueryMode && (