From 3238c4354038aea26aa65626b8c3263ec1ffe7e9 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Thu, 5 Sep 2019 11:05:01 +0530 Subject: [PATCH] Confluence#SEC-10 - File upload for connect -- Restricted the file upload extensions --- config/constants/dev.js | 1 + config/constants/master.js | 1 + config/constants/qa.js | 1 + src/components/Feed/NewPostMobile.jsx | 5 ++++- src/components/FileList/AddFiles.jsx | 9 ++++++++- src/components/LinksMenu/FileLinksMenu.jsx | 4 +++- src/components/RichTextArea/RichTextArea.jsx | 7 +++++-- src/config/constants.js | 3 ++- src/projects/detail/containers/AssetsInfoContainer.jsx | 5 ++++- 9 files changed, 29 insertions(+), 7 deletions(-) diff --git a/config/constants/dev.js b/config/constants/dev.js index 4d78903df..edb4438d6 100644 --- a/config/constants/dev.js +++ b/config/constants/dev.js @@ -35,6 +35,7 @@ module.exports = { FILE_PICKER_API_KEY: process.env.FILE_PICKER_API_KEY_DEV, FILE_PICKER_SUBMISSION_CONTAINER_NAME: 'submission-staging-dev', + FILE_PICKER_ACCEPT: process.env.FILE_PICKER_ACCEPT_DEV, SALESFORCE_PROJECT_LEAD_LINK: 'https://c.cs18.visual.force.com/apex/ConnectLead?connectProjectId=', diff --git a/config/constants/master.js b/config/constants/master.js index d1440786f..6370c4827 100644 --- a/config/constants/master.js +++ b/config/constants/master.js @@ -36,6 +36,7 @@ module.exports = { FILE_PICKER_API_KEY: process.env.FILE_PICKER_API_KEY_PROD, FILE_PICKER_SUBMISSION_CONTAINER_NAME: 'submission-staging-prod', + FILE_PICKER_ACCEPT: process.env.FILE_PICKER_ACCEPT_PROD, SALESFORCE_PROJECT_LEAD_LINK: 'https://topcoder.my.salesforce.com/apex/ConnectLead?connectProjectId=', CONNECT_SEGMENT_KEY: process.env.PROD_SEGMENT_KEY, diff --git a/config/constants/qa.js b/config/constants/qa.js index f2114aac6..44de22095 100644 --- a/config/constants/qa.js +++ b/config/constants/qa.js @@ -35,6 +35,7 @@ module.exports = { FILE_PICKER_API_KEY: process.env.FILE_PICKER_API_KEY_QA, FILE_PICKER_SUBMISSION_CONTAINER_NAME: 'submission-staging-qa', + FILE_PICKER_ACCEPT: process.env.FILE_PICKER_ACCEPT_QA, SALESFORCE_PROJECT_LEAD_LINK: 'https://c.cs18.visual.force.com/apex/ConnectLead?connectProjectId=', CONNECT_SEGMENT_KEY: process.env.QA_SEGMENT_KEY, diff --git a/src/components/Feed/NewPostMobile.jsx b/src/components/Feed/NewPostMobile.jsx index 37acea72f..8c0ced3ea 100644 --- a/src/components/Feed/NewPostMobile.jsx +++ b/src/components/Feed/NewPostMobile.jsx @@ -21,7 +21,9 @@ import { FILE_PICKER_API_KEY, FILE_PICKER_CNAME, FILE_PICKER_FROM_SOURCES, - FILE_PICKER_SUBMISSION_CONTAINER_NAME, PROJECT_ATTACHMENTS_FOLDER + FILE_PICKER_SUBMISSION_CONTAINER_NAME, + PROJECT_ATTACHMENTS_FOLDER, + FILE_PICKER_ACCEPT, } from '../../config/constants' import BtnRemove from '../../assets/icons/ui-16px-1_trash-simple.svg' import _ from 'lodash' @@ -114,6 +116,7 @@ class NewPostMobile extends React.Component { }, maxFiles: 4, fromSources: FILE_PICKER_FROM_SOURCES, + accept: FILE_PICKER_ACCEPT, uploadInBackground: false, onFileUploadFinished: (files) => { this.processUploadedFiles(files) diff --git a/src/components/FileList/AddFiles.jsx b/src/components/FileList/AddFiles.jsx index ee0a7ff63..929dc7d52 100644 --- a/src/components/FileList/AddFiles.jsx +++ b/src/components/FileList/AddFiles.jsx @@ -3,7 +3,13 @@ import PropTypes from 'prop-types' import FilePicker from 'appirio-tech-react-components/components/FilePicker/FilePicker' import './AddFiles.scss' -import { FILE_PICKER_API_KEY, FILE_PICKER_SUBMISSION_CONTAINER_NAME, FILE_PICKER_CNAME, FILE_PICKER_FROM_SOURCES } from '../../config/constants' +import { + FILE_PICKER_API_KEY, + FILE_PICKER_SUBMISSION_CONTAINER_NAME, + FILE_PICKER_CNAME, + FILE_PICKER_FROM_SOURCES, + FILE_PICKER_ACCEPT +} from '../../config/constants' const AddFiles = props => { const { successHandler, category, storePath } = props @@ -20,6 +26,7 @@ const AddFiles = props => { location: 's3', storeContainer: FILE_PICKER_SUBMISSION_CONTAINER_NAME, fromSources: FILE_PICKER_FROM_SOURCES, + accept: FILE_PICKER_ACCEPT, path: storePath, multiple: 'true', services: ['COMPUTER', 'GOOGLE_DRIVE', 'BOX', 'DROPBOX', 'SKYDRIVE'] diff --git a/src/components/LinksMenu/FileLinksMenu.jsx b/src/components/LinksMenu/FileLinksMenu.jsx index 7ff5313fc..0bf9ab47c 100644 --- a/src/components/LinksMenu/FileLinksMenu.jsx +++ b/src/components/LinksMenu/FileLinksMenu.jsx @@ -21,7 +21,8 @@ import { FILE_PICKER_API_KEY, FILE_PICKER_FROM_SOURCES, FILE_PICKER_CNAME, - FILE_PICKER_SUBMISSION_CONTAINER_NAME + FILE_PICKER_SUBMISSION_CONTAINER_NAME, + FILE_PICKER_ACCEPT, } from '../../config/constants' const FileLinksMenu = ({ @@ -119,6 +120,7 @@ const FileLinksMenu = ({ }, maxFiles: 4, fromSources: FILE_PICKER_FROM_SOURCES, + accept: FILE_PICKER_ACCEPT, uploadInBackground: false, onFileUploadFinished: (files) => { processUploadedFiles(files, category) diff --git a/src/components/RichTextArea/RichTextArea.jsx b/src/components/RichTextArea/RichTextArea.jsx index 4210c5b7a..5fe2bb59a 100644 --- a/src/components/RichTextArea/RichTextArea.jsx +++ b/src/components/RichTextArea/RichTextArea.jsx @@ -27,9 +27,11 @@ import TitleSaveIcon from '../../assets/icons/icon-save.svg' import { FILE_PICKER_API_KEY, - FILE_PICKER_CNAME, FILE_PICKER_FROM_SOURCES, + FILE_PICKER_CNAME, + FILE_PICKER_FROM_SOURCES, FILE_PICKER_SUBMISSION_CONTAINER_NAME, - PROJECT_ATTACHMENTS_FOLDER + PROJECT_ATTACHMENTS_FOLDER, + FILE_PICKER_ACCEPT, } from '../../config/constants' import * as filepicker from 'filestack-js' import BtnRemove from '../../assets/icons/ui-16px-1_trash-simple.svg' @@ -339,6 +341,7 @@ class RichTextArea extends React.Component { }, maxFiles: 4, fromSources: FILE_PICKER_FROM_SOURCES, + accept: FILE_PICKER_ACCEPT, uploadInBackground: false, onFileUploadFinished: (files) => { this.processUploadedFiles(files) diff --git a/src/config/constants.js b/src/config/constants.js index 0020a8588..a42158c46 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -644,11 +644,12 @@ export const ROLE_ADMINISTRATOR = 'administrator' export const ROLE_CONNECT_COPILOT_MANAGER = 'Connect Copilot Manager' // FIXME .. remove defaults -export const FILE_PICKER_API_KEY = process.env.FILE_PICKER_API_KEY || 'AzFINuQoqTmqw0QEoaw9az' +export const FILE_PICKER_API_KEY = process.env.FILE_PICKER_API_KEY || '' export const FILE_PICKER_SUBMISSION_CONTAINER_NAME = process.env.FILE_PICKER_SUBMISSION_CONTAINER_NAME || 'submission-staging-dev' export const FILE_PICKER_CNAME = process.env.FILE_PICKER_CNAME || 'fs.topcoder.com' export const FILE_PICKER_FROM_SOURCES = process.env.FILE_PICKER_FROM_SOURCES || ['local_file_system', 'googledrive', 'dropbox'] export const PROJECT_ATTACHMENTS_FOLDER = process.env.PROJECT_ATTACHMENTS_FOLDER || 'PROJECT_ATTACHMENTS' +export const FILE_PICKER_ACCEPT = process.env.FILE_PICKER_ACCEPT || ['.bmp', '.gif', '.jpg', '.tex', '.xls', '.xlsx', '.doc', '.docx', '.zip', '.txt', '.pdf', '.png', '.ppt', '.pptx', '.rtf'] export const SEGMENT_KEY = process.env.CONNECT_SEGMENT_KEY /* diff --git a/src/projects/detail/containers/AssetsInfoContainer.jsx b/src/projects/detail/containers/AssetsInfoContainer.jsx index 4140f3fad..b0a19d47c 100644 --- a/src/projects/detail/containers/AssetsInfoContainer.jsx +++ b/src/projects/detail/containers/AssetsInfoContainer.jsx @@ -19,7 +19,9 @@ import { PROJECT_ATTACHMENTS_FOLDER, FILE_PICKER_API_KEY, FILE_PICKER_FROM_SOURCES, FILE_PICKER_CNAME, - FILE_PICKER_SUBMISSION_CONTAINER_NAME } from '../../../config/constants' + FILE_PICKER_SUBMISSION_CONTAINER_NAME, + FILE_PICKER_ACCEPT, +} from '../../../config/constants' import AddLink from '../../../components/AssetsLibrary/AddLink' import PERMISSIONS from '../../../config/permissions' import { checkPermission } from '../../../helpers/permissions' @@ -517,6 +519,7 @@ class AssetsInfoContainer extends React.Component { }, maxFiles: 4, fromSources: FILE_PICKER_FROM_SOURCES, + accept: FILE_PICKER_ACCEPT, uploadInBackground: false, onFileUploadFinished: (files) => { processUploadedFiles(files, category)