Inject none secret env variables into front components (#20511)
## Summary - Inject non-secret application variables (`isSecret: false`) into front component `process.env` via the existing Web Worker `setWorkerEnv` mechanism - Filter secret variables server-side in the resolver so they never reach the browser - Set application variables before system variables (`TWENTY_API_URL`, `TWENTY_APP_ACCESS_TOKEN`) to prevent override - Wire up environment variable keys in the logic function code editor for TypeScript autocomplete ## Test plan - [x] Unit tests for `buildNonSecretEnvVar` (6 passing) - [x] Typecheck passes for `twenty-front` and `twenty-server` - [x] Install an app with both `isSecret: false` and `isSecret: true` variables, open a front component, verify only non-secret vars appear in `process.env` - [x] Open a logic function editor, verify autocomplete suggests declared variable keys
This commit is contained in:
+5
@@ -100,6 +100,9 @@ export const FrontComponentRenderer = ({
|
||||
|
||||
const accessToken = applicationTokenPair.applicationAccessToken.token;
|
||||
|
||||
const applicationVariables =
|
||||
data.frontComponent.applicationVariables ?? undefined;
|
||||
|
||||
if (usesSdkClient) {
|
||||
return (
|
||||
<FrontComponentRendererProvider frontComponentId={frontComponentId}>
|
||||
@@ -112,6 +115,7 @@ export const FrontComponentRenderer = ({
|
||||
frontComponentHostCommunicationApi={
|
||||
frontComponentHostCommunicationApi
|
||||
}
|
||||
applicationVariables={applicationVariables}
|
||||
onError={handleError}
|
||||
/>
|
||||
</FrontComponentRendererProvider>
|
||||
@@ -127,6 +131,7 @@ export const FrontComponentRenderer = ({
|
||||
apiUrl={REACT_APP_SERVER_BASE_URL}
|
||||
executionContext={executionContext}
|
||||
frontComponentHostCommunicationApi={frontComponentHostCommunicationApi}
|
||||
applicationVariables={applicationVariables}
|
||||
onError={handleError}
|
||||
/>
|
||||
</FrontComponentRendererProvider>
|
||||
|
||||
+3
@@ -16,6 +16,7 @@ type FrontComponentRendererWithSdkClientProps = {
|
||||
applicationId: string;
|
||||
executionContext: FrontComponentExecutionContext;
|
||||
frontComponentHostCommunicationApi: FrontComponentHostCommunicationApi;
|
||||
applicationVariables?: Record<string, string>;
|
||||
onError: (error?: Error) => void;
|
||||
};
|
||||
|
||||
@@ -26,6 +27,7 @@ export const FrontComponentRendererWithSdkClient = ({
|
||||
applicationId,
|
||||
executionContext,
|
||||
frontComponentHostCommunicationApi,
|
||||
applicationVariables,
|
||||
onError,
|
||||
}: FrontComponentRendererWithSdkClientProps) => {
|
||||
const sdkClientState = useAtomValue(
|
||||
@@ -50,6 +52,7 @@ export const FrontComponentRendererWithSdkClient = ({
|
||||
frontComponentHostCommunicationApi={
|
||||
frontComponentHostCommunicationApi
|
||||
}
|
||||
applicationVariables={applicationVariables}
|
||||
onError={onError}
|
||||
/>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user