From 39d9804753751d17c3c0e0993a03475acbdc3b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 21 May 2026 15:41:41 -0300 Subject: [PATCH 1/2] fix: add new env variable for allowed file extensions to upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .env.example | 1 + src/app.js | 2 ++ .../form-templates/sponsor-inventory-popup.js | 5 ++++- .../modules/page-template-document-download-module.js | 6 +++++- .../components/sponsor-form-item-form.js | 6 +++++- src/utils/methods.js | 3 +++ 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 544d0fd7e..c085e977c 100644 --- a/.env.example +++ b/.env.example @@ -18,6 +18,7 @@ SPONSOR_USERS_API_URL=https://sponsor-users-api.dev.fnopen.com SPONSOR_USERS_SCOPES="show-medata/read show-medata/write access-requests/read access-requests/write sponsor-users/read sponsor-users/write groups/read groups/write media-upload/write" EMAIL_SCOPES="clients/read templates/read templates/write emails/read" FILE_UPLOAD_SCOPES="files/upload" +FILE_UPLOAD_ALLOWED_EXTENSIONS="pdf" SPONSOR_PAGES_API_URL=https://sponsor-pages-api.dev.fnopen.com SPONSOR_PAGES_SCOPES="page-template/read page-template/write show-page/read show-page/write media-upload/read" SCOPES="profile openid offline_access reports/all ${EMAIL_SCOPES} ${INVENTORY_API_SCOPES} ${FILE_UPLOAD_SCOPES} ${PURCHASES_API_SCOPES} ${SPONSOR_USERS_SCOPES} ${SPONSOR_PAGES_SCOPES} ${DROPBOX_MATERIALIZER_API_SCOPES} ${SCOPES_BASE_REALM}/summits/delete-event ${SCOPES_BASE_REALM}/companies/read ${SCOPES_BASE_REALM}/companies/write ${SCOPES_BASE_REALM}/summits/write ${SCOPES_BASE_REALM}/summits/write-event ${SCOPES_BASE_REALM}/summits/read/all ${SCOPES_BASE_REALM}/summits/read ${SCOPES_BASE_REALM}/summits/publish-event ${SCOPES_BASE_REALM}/members/read ${SCOPES_BASE_REALM}/members/read/me ${SCOPES_BASE_REALM}/speakers/write ${SCOPES_BASE_REALM}/attendees/write ${SCOPES_BASE_REALM}/members/write ${SCOPES_BASE_REALM}/organizations/write ${SCOPES_BASE_REALM}/organizations/read ${SCOPES_BASE_REALM}/summits/write-presentation-materials ${SCOPES_BASE_REALM}/summits/registration-orders/update ${SCOPES_BASE_REALM}/summits/registration-orders/delete ${SCOPES_BASE_REALM}/summits/registration-orders/create/offline ${SCOPES_BASE_REALM}/summits/badge-scans/read ${SCOPES_BASE_REALM}/summits/badge-scans/write config-values/write ${SCOPES_BASE_REALM}/summit-administrator-groups/read ${SCOPES_BASE_REALM}/summit-administrator-groups/write ${SCOPES_BASE_REALM}/summit-media-file-types/read ${SCOPES_BASE_REALM}/summit-media-file-types/write user-roles/write entity-updates/publish ${SCOPES_BASE_REALM}/audit-logs/read filter-criteria/read filter-criteria/write" diff --git a/src/app.js b/src/app.js index 39b357402..3d26977ea 100644 --- a/src/app.js +++ b/src/app.js @@ -103,6 +103,8 @@ window.SENTRY_TRACE_PROPAGATION_TARGETS = window.CFP_APP_BASE_URL = process.env.CFP_APP_BASE_URL; window.DROPBOX_MATERIALIZER_API_BASE_URL = process.env.DROPBOX_MATERIALIZER_API_BASE_URL; +window.FILE_UPLOAD_ALLOWED_EXTENSIONS = + process.env.FILE_UPLOAD_ALLOWED_EXTENSIONS; if (exclusiveSections.hasOwnProperty(process.env.APP_CLIENT_NAME)) { window.EXCLUSIVE_SECTIONS = exclusiveSections[process.env.APP_CLIENT_NAME]; diff --git a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js index 7dbb7ab7c..61603c270 100644 --- a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js +++ b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js @@ -37,6 +37,7 @@ import { } from "../../../utils/yup"; import ItemPriceTiers from "../../../components/mui/formik-inputs/item-price-tiers"; import MuiFormikQuantityField from "../../../components/mui/formik-inputs/mui-formik-quantity-field"; +import { getFileUploadAllowedExtensions } from "../../../utils/methods"; const SponsorItemDialog = ({ onClose, @@ -77,6 +78,8 @@ const SponsorItemDialog = ({ } }; + console.log("CHECK!", getFileUploadAllowedExtensions()); + useScrollToError(formik); const handleClose = () => { @@ -222,7 +225,7 @@ const SponsorItemDialog = ({ name="images" maxFiles={mediaType.max_uploads_qty} allowedExtensions={[ - "pdf", + ...getFileUploadAllowedExtensions(), ...ALLOWED_INVENTORY_IMAGE_FORMATS ]} /> diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js index 916d5d75f..f21b64119 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js @@ -10,6 +10,7 @@ import { PAGE_MODULES_DOWNLOAD } from "../../../../../utils/constants"; import MuiFormikRadioGroup from "../../../../../components/mui/formik-inputs/mui-formik-radio-group"; +import { getFileUploadAllowedExtensions } from "../../../../../utils/methods"; const DocumentDownloadModule = ({ baseName, index }) => { const buildFieldName = (field) => `${baseName}[${index}].${field}`; @@ -82,7 +83,10 @@ const DocumentDownloadModule = ({ baseName, index }) => { id={`document-module-upload-${index}`} name={buildFieldName("file")} maxFiles={1} - allowedExtensions={["pdf", ...ALLOWED_INVENTORY_IMAGE_FORMATS]} + allowedExtensions={[ + ...getFileUploadAllowedExtensions(), + ...ALLOWED_INVENTORY_IMAGE_FORMATS + ]} /> )} diff --git a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js index 51e477e57..87c2df085 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js @@ -32,6 +32,7 @@ import { ALLOWED_INVENTORY_IMAGE_FORMATS, MAX_INVENTORY_IMAGES_UPLOAD_QTY } from "../../../../utils/constants"; +import { getFileUploadAllowedExtensions } from "../../../../utils/methods"; const buildInitialValues = (data) => ({ ...data }); @@ -151,7 +152,10 @@ const SponsorFormItemForm = ({ initialValues, onSubmit }) => { id="item-image-upload" name="images" maxFiles={MAX_INVENTORY_IMAGES_UPLOAD_QTY} - allowedExtensions={["pdf", ...ALLOWED_INVENTORY_IMAGE_FORMATS]} + allowedExtensions={[ + ...getFileUploadAllowedExtensions(), + ...ALLOWED_INVENTORY_IMAGE_FORMATS + ]} /> diff --git a/src/utils/methods.js b/src/utils/methods.js index cb93e33d2..324c2a579 100644 --- a/src/utils/methods.js +++ b/src/utils/methods.js @@ -629,3 +629,6 @@ export const formatDate = (date, timeZone, format = DATETIME_FORMAT) => { .tz(timeZone) .format(format); }; + +export const getFileUploadAllowedExtensions = () => + window.FILE_UPLOAD_ALLOWED_EXTENSIONS?.split(",").filter(Boolean) ?? []; From 96796bdb535bb5faa3773b0c14cedbc460efff3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 21 May 2026 17:47:40 -0300 Subject: [PATCH 2/2] fix: clean console log, adjust extensions prop, add fallback value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .env.example | 2 +- src/app.js | 7 +++++-- .../form-templates/sponsor-inventory-popup.js | 7 +------ .../modules/page-template-document-download-module.js | 10 ++-------- .../components/sponsor-form-item-form.js | 6 +----- 5 files changed, 10 insertions(+), 22 deletions(-) diff --git a/.env.example b/.env.example index c085e977c..6d0c13929 100644 --- a/.env.example +++ b/.env.example @@ -18,7 +18,7 @@ SPONSOR_USERS_API_URL=https://sponsor-users-api.dev.fnopen.com SPONSOR_USERS_SCOPES="show-medata/read show-medata/write access-requests/read access-requests/write sponsor-users/read sponsor-users/write groups/read groups/write media-upload/write" EMAIL_SCOPES="clients/read templates/read templates/write emails/read" FILE_UPLOAD_SCOPES="files/upload" -FILE_UPLOAD_ALLOWED_EXTENSIONS="pdf" +FILE_UPLOAD_ALLOWED_EXTENSIONS="pdf,jpg,jpeg,png,ppt,key,pptx" SPONSOR_PAGES_API_URL=https://sponsor-pages-api.dev.fnopen.com SPONSOR_PAGES_SCOPES="page-template/read page-template/write show-page/read show-page/write media-upload/read" SCOPES="profile openid offline_access reports/all ${EMAIL_SCOPES} ${INVENTORY_API_SCOPES} ${FILE_UPLOAD_SCOPES} ${PURCHASES_API_SCOPES} ${SPONSOR_USERS_SCOPES} ${SPONSOR_PAGES_SCOPES} ${DROPBOX_MATERIALIZER_API_SCOPES} ${SCOPES_BASE_REALM}/summits/delete-event ${SCOPES_BASE_REALM}/companies/read ${SCOPES_BASE_REALM}/companies/write ${SCOPES_BASE_REALM}/summits/write ${SCOPES_BASE_REALM}/summits/write-event ${SCOPES_BASE_REALM}/summits/read/all ${SCOPES_BASE_REALM}/summits/read ${SCOPES_BASE_REALM}/summits/publish-event ${SCOPES_BASE_REALM}/members/read ${SCOPES_BASE_REALM}/members/read/me ${SCOPES_BASE_REALM}/speakers/write ${SCOPES_BASE_REALM}/attendees/write ${SCOPES_BASE_REALM}/members/write ${SCOPES_BASE_REALM}/organizations/write ${SCOPES_BASE_REALM}/organizations/read ${SCOPES_BASE_REALM}/summits/write-presentation-materials ${SCOPES_BASE_REALM}/summits/registration-orders/update ${SCOPES_BASE_REALM}/summits/registration-orders/delete ${SCOPES_BASE_REALM}/summits/registration-orders/create/offline ${SCOPES_BASE_REALM}/summits/badge-scans/read ${SCOPES_BASE_REALM}/summits/badge-scans/write config-values/write ${SCOPES_BASE_REALM}/summit-administrator-groups/read ${SCOPES_BASE_REALM}/summit-administrator-groups/write ${SCOPES_BASE_REALM}/summit-media-file-types/read ${SCOPES_BASE_REALM}/summit-media-file-types/write user-roles/write entity-updates/publish ${SCOPES_BASE_REALM}/audit-logs/read filter-criteria/read filter-criteria/write" diff --git a/src/app.js b/src/app.js index 3d26977ea..3f459ed2c 100644 --- a/src/app.js +++ b/src/app.js @@ -44,7 +44,10 @@ import LogOutCallbackRoute from "./routes/logout-callback-route"; import AuthButton from "./components/auth-button"; import DefaultRoute from "./routes/default-route"; import { getTimezones } from "./actions/base-actions"; -import { LANGUAGE_CODE_LENGTH } from "./utils/constants"; +import { + ALLOWED_INVENTORY_IMAGE_FORMATS, + LANGUAGE_CODE_LENGTH +} from "./utils/constants"; import { SentryFallbackFunction } from "./components/SentryErrorComponent"; import "@fontsource/roboto/300.css"; @@ -104,7 +107,7 @@ window.CFP_APP_BASE_URL = process.env.CFP_APP_BASE_URL; window.DROPBOX_MATERIALIZER_API_BASE_URL = process.env.DROPBOX_MATERIALIZER_API_BASE_URL; window.FILE_UPLOAD_ALLOWED_EXTENSIONS = - process.env.FILE_UPLOAD_ALLOWED_EXTENSIONS; + process.env.FILE_UPLOAD_ALLOWED_EXTENSIONS || ALLOWED_INVENTORY_IMAGE_FORMATS; if (exclusiveSections.hasOwnProperty(process.env.APP_CLIENT_NAME)) { window.EXCLUSIVE_SECTIONS = exclusiveSections[process.env.APP_CLIENT_NAME]; diff --git a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js index 61603c270..3d67b4f87 100644 --- a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js +++ b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js @@ -78,8 +78,6 @@ const SponsorItemDialog = ({ } }; - console.log("CHECK!", getFileUploadAllowedExtensions()); - useScrollToError(formik); const handleClose = () => { @@ -224,10 +222,7 @@ const SponsorItemDialog = ({ id="image-upload" name="images" maxFiles={mediaType.max_uploads_qty} - allowedExtensions={[ - ...getFileUploadAllowedExtensions(), - ...ALLOWED_INVENTORY_IMAGE_FORMATS - ]} + allowedExtensions={getFileUploadAllowedExtensions()} /> diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js index f21b64119..64945f2be 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-document-download-module.js @@ -5,10 +5,7 @@ import { useField } from "formik"; import { Divider, Grid2, InputLabel } from "@mui/material"; import MuiFormikUpload from "openstack-uicore-foundation/lib/components/mui/formik-inputs/upload"; import MuiFormikTextField from "../../../../../components/mui/formik-inputs/mui-formik-textfield"; -import { - ALLOWED_INVENTORY_IMAGE_FORMATS, - PAGE_MODULES_DOWNLOAD -} from "../../../../../utils/constants"; +import { PAGE_MODULES_DOWNLOAD } from "../../../../../utils/constants"; import MuiFormikRadioGroup from "../../../../../components/mui/formik-inputs/mui-formik-radio-group"; import { getFileUploadAllowedExtensions } from "../../../../../utils/methods"; @@ -83,10 +80,7 @@ const DocumentDownloadModule = ({ baseName, index }) => { id={`document-module-upload-${index}`} name={buildFieldName("file")} maxFiles={1} - allowedExtensions={[ - ...getFileUploadAllowedExtensions(), - ...ALLOWED_INVENTORY_IMAGE_FORMATS - ]} + allowedExtensions={getFileUploadAllowedExtensions()} /> )} diff --git a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js index 87c2df085..593110192 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js @@ -29,7 +29,6 @@ import ItemPriceTiers from "../../../../components/mui/formik-inputs/item-price- import FormikTextEditor from "../../../../components/inputs/formik-text-editor"; import MuiFormikQuantityField from "../../../../components/mui/formik-inputs/mui-formik-quantity-field"; import { - ALLOWED_INVENTORY_IMAGE_FORMATS, MAX_INVENTORY_IMAGES_UPLOAD_QTY } from "../../../../utils/constants"; import { getFileUploadAllowedExtensions } from "../../../../utils/methods"; @@ -152,10 +151,7 @@ const SponsorFormItemForm = ({ initialValues, onSubmit }) => { id="item-image-upload" name="images" maxFiles={MAX_INVENTORY_IMAGES_UPLOAD_QTY} - allowedExtensions={[ - ...getFileUploadAllowedExtensions(), - ...ALLOWED_INVENTORY_IMAGE_FORMATS - ]} + allowedExtensions={getFileUploadAllowedExtensions()} />