From 13b5d0fd99cd3a18c25add5a306b79e2108b5a73 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Fri, 3 May 2024 00:59:27 +0530 Subject: [PATCH 01/12] masking workspace constants on frontend --- .../src/Editor/CodeBuilder/CodeHinter.jsx | 12 +- frontend/src/Editor/Editor.jsx | 4 +- .../src/ManageOrgConstants/ConstantForm.jsx | 112 ++++++++++++++---- .../src/ManageOrgConstants/ConstantTable.jsx | 60 ++++++++-- .../ManageOrgConstants/ManageOrgConstants.jsx | 2 +- .../OrgConstantsVariablesPreviewBox.jsx | 6 +- .../organization_constants.service.js | 21 ++-- .../organization_constants.controller.ts | 33 +++++- .../organization_constants.service.ts | 21 +++- 9 files changed, 211 insertions(+), 60 deletions(-) diff --git a/frontend/src/Editor/CodeBuilder/CodeHinter.jsx b/frontend/src/Editor/CodeBuilder/CodeHinter.jsx index b3d0d4c7d2..0d77d7b606 100644 --- a/frontend/src/Editor/CodeBuilder/CodeHinter.jsx +++ b/frontend/src/Editor/CodeBuilder/CodeHinter.jsx @@ -103,6 +103,8 @@ export function CodeHinter({ }) { const context = useContext(CodeHinterContext); + const hiddenWorkspaceConstant = 'Workspace constant values are hidden'; + const darkMode = localStorage.getItem('darkMode') === 'true'; const options = { lineNumbers: lineNumbers ?? false, @@ -134,6 +136,8 @@ export function CodeHinter({ const isWorkspaceVariable = typeof currentValue === 'string' && (currentValue.includes('%%client') || currentValue.includes('%%server')); + const isWorkspaceConstant = typeof currentValue === 'string' && currentValue.includes('constants'); + const slideInStyles = useSpring({ config: { ...config.stiff }, from: { opacity: 0, height: 0 }, @@ -240,7 +244,7 @@ export function CodeHinter({ globalPreviewCopy = preview; globalErrorCopy = null; setResolvingError(null); - setResolvedValue(preview); + setResolvedValue(isWorkspaceConstant ? hiddenWorkspaceConstant : preview); } return [globalPreviewCopy, globalErrorCopy]; @@ -252,7 +256,7 @@ export function CodeHinter({ return () => { if (enablePreview) { setPrevCurrentValue(null); - setResolvedValue(globalPreviewCopy); + setResolvedValue(isWorkspaceConstant ? hiddenWorkspaceConstant : globalPreviewCopy); setResolvingError(globalErrorCopy); } }; @@ -348,9 +352,9 @@ export function CodeHinter({
- {previewType} + {!isWorkspaceConstant && previewType}
- {isFocused && ( + {isFocused && !isWorkspaceConstant && (
copyToClipboard(content)} icon="copy" tip="Copy to clipboard" />
diff --git a/frontend/src/Editor/Editor.jsx b/frontend/src/Editor/Editor.jsx index 87ee134c34..00e8cbd935 100644 --- a/frontend/src/Editor/Editor.jsx +++ b/frontend/src/Editor/Editor.jsx @@ -77,6 +77,8 @@ enablePatches(); const decimalToHex = (alpha) => (alpha === 0 ? '00' : Math.round(255 * alpha).toString(16)); +const maskedWorkspaceConstantStr = '**************'; + const EditorComponent = (props) => { const { socket } = createWebsocketConnection(props?.params?.id); const mounted = useMounted(); @@ -373,7 +375,7 @@ const EditorComponent = (props) => { const orgConstants = {}; constants.map((constant) => { const constantValue = constant.values.find((value) => value.environmentName === 'production')['value']; - orgConstants[constant.name] = constantValue; + orgConstants[constant.name] = maskedWorkspaceConstantStr; }); useCurrentStateStore.getState().actions.setCurrentState({ diff --git a/frontend/src/ManageOrgConstants/ConstantForm.jsx b/frontend/src/ManageOrgConstants/ConstantForm.jsx index 30ac314fe2..9e8fdece32 100644 --- a/frontend/src/ManageOrgConstants/ConstantForm.jsx +++ b/frontend/src/ManageOrgConstants/ConstantForm.jsx @@ -4,6 +4,8 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import _, { capitalize } from 'lodash'; import { Tooltip } from 'react-tooltip'; import { FormWrapper, textAreaEnterOnSave } from '@/_components/FormWrapper'; +import EyeHide from '../../assets/images/onboardingassets/Icons/EyeHide'; +import EyeShow from '../../assets/images/onboardingassets/Icons/EyeShow'; const ConstantForm = ({ selectedConstant, @@ -19,6 +21,21 @@ const ConstantForm = ({ environments: [{ label: currentEnvironment?.name, value: currentEnvironment?.id }], })); + const [showValue, setShowValue] = useState(false); + + const toggleShowValue = () => { + setShowValue(!showValue); + }; + + const getDisplayedValue = () => { + if (!fields['value']) { + return ''; + } + return showValue ? fields['value'] : '*'.repeat(fields['value'].length); + }; + + const darkMode = localStorage.getItem('darkMode') === 'true'; + const [error, setError] = useState({}); function isValidPropertyName(name) { @@ -133,6 +150,10 @@ const ConstantForm = ({ } }; + const handleBlur = () => { + setShowValue(false); + }; + return (
@@ -177,28 +198,77 @@ const ConstantForm = ({
-