diff --git a/apps/OpenSign/src/components/fields/FileUpload.js b/apps/OpenSign/src/components/fields/FileUpload.js index bd9c72eec..bfb47baa4 100644 --- a/apps/OpenSign/src/components/fields/FileUpload.js +++ b/apps/OpenSign/src/components/fields/FileUpload.js @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react"; import { SaveFileSize } from "../../constant/saveFileSize"; import Parse from "parse"; +import sanitizeFileName from "../../primitives/sanitizeFileName"; const FileUpload = (props) => { const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); @@ -70,10 +71,11 @@ const FileUpload = (props) => { Parse.serverURL = parseBaseUrl; Parse.initialize(parseAppId); const size = file.size; - // console.log("file ", file) + const fileName = file.name; + const name = sanitizeFileName(fileName); setfileload(true); const pdfFile = file; - const parseFile = new Parse.File(pdfFile.name, pdfFile); + const parseFile = new Parse.File(name, pdfFile); try { const response = await parseFile.save(); diff --git a/apps/OpenSign/src/primitives/sanitizeFileName.js b/apps/OpenSign/src/primitives/sanitizeFileName.js new file mode 100644 index 000000000..0d0be1abc --- /dev/null +++ b/apps/OpenSign/src/primitives/sanitizeFileName.js @@ -0,0 +1,5 @@ +function sanitizeFileName(fileName) { + // Remove spaces and invalid characters + return fileName.replace(/[^a-zA-Z0-9._-]/g, ""); +} +export default sanitizeFileName; diff --git a/apps/OpenSign/src/routes/ForgetPassword.js b/apps/OpenSign/src/routes/ForgetPassword.js index 356a35952..86cb9a6a8 100644 --- a/apps/OpenSign/src/routes/ForgetPassword.js +++ b/apps/OpenSign/src/routes/ForgetPassword.js @@ -1,120 +1,114 @@ -import React, { Component } from "react"; +import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import { fetchAppInfo, forgetPassword } from "../redux/actions"; import Title from "../components/Title"; import { NavLink } from "react-router-dom"; import login_img from "../assets/images/login_img.svg"; -class forgotPassword extends Component { - constructor(props) { - super(props); - this.state = { - email: "", - password: "", - hideNav: "" - }; - } - - handleChange = (event) => { +function ForgotPassword(props) { + const [state, setState] = useState({ + email: "", + password: "", + hideNav: "" + }); + const handleChange = (event) => { const { name, value } = event.target; - this.setState({ [name]: value }); + setState({ ...state, [name]: value }); }; - resize = () => { + const resize = () => { let currentHideNav = window.innerWidth <= 760; - if (currentHideNav !== this.state.hideNav) { - this.setState({ hideNav: currentHideNav }); + if (currentHideNav !== state.hideNav) { + setState({ ...state, hideNav: currentHideNav }); } }; - handleSubmit = (event) => { + const handleSubmit = (event) => { event.preventDefault(); - - localStorage.setItem("appLogo", this.props.appInfo.applogo); - localStorage.setItem("appName", this.props.appInfo.appname); - localStorage.setItem("defaultmenuid", this.props.appInfo.defaultmenuid); - localStorage.setItem("PageLanding", this.props.appInfo.LandingPageId); + localStorage.setItem("appLogo", props.appInfo.applogo); + localStorage.setItem("appName", props.appInfo.appname); + localStorage.setItem("defaultmenuid", props.appInfo.defaultmenuid); + localStorage.setItem("PageLanding", props.appInfo.LandingPageId); localStorage.setItem( "userSettings", - JSON.stringify(this.props.appInfo.settings) + JSON.stringify(props.appInfo.settings) ); - const { email } = this.state; - if (email) { - this.props.forgetPassword(email); + + if (state.email) { + props.forgetPassword(state.email); } }; - componentDidMount() { - this.props.fetchAppInfo(localStorage.getItem("domain")); - window.addEventListener("resize", this.resize.bind(this)); - this.resize(); - } + useEffect(() => { + props.fetchAppInfo(localStorage.getItem("domain")); + resize(); + window.addEventListener("resize", resize); + return () => window.removeEventListener("resize", resize); + // eslint-disable-next-line + }, []); - render() { - const { email } = this.state; - let image = this.props.appInfo.applogo; - return ( -