From 5aa793b46964044b746e345264753883c9efaa9d Mon Sep 17 00:00:00 2001 From: merelendor Date: Tue, 11 Apr 2023 16:47:43 +0300 Subject: [PATCH] FilesList filesize limit --- components/CalendarDatePicker/index.js | 2 - components/questionnaire/forms/FilesList.js | 156 +++++++++++--------- pages/api/suggests/address.js | 73 ++++----- pages/api/suggests/document/check.js | 84 ++++++----- pages/api/suggests/document/issuer.js | 84 ++++++----- pages/api/suggests/inn.js | 80 +++++----- pages/api/suggests/middlename.js | 84 ++++++----- pages/api/suggests/name.js | 84 ++++++----- 8 files changed, 356 insertions(+), 291 deletions(-) diff --git a/components/CalendarDatePicker/index.js b/components/CalendarDatePicker/index.js index c8896ef..d47d7bb 100644 --- a/components/CalendarDatePicker/index.js +++ b/components/CalendarDatePicker/index.js @@ -93,8 +93,6 @@ export default class CalendarDatePicker extends React.Component const { id, placeholder, value, min, max, disabled, plain, style, required, className } = this.props; const { readonly, input_value } = this.state; - console.log("DATE", className); - if(disabled) { return ( diff --git a/components/questionnaire/forms/FilesList.js b/components/questionnaire/forms/FilesList.js index 17bcba1..4c4c015 100644 --- a/components/questionnaire/forms/FilesList.js +++ b/components/questionnaire/forms/FilesList.js @@ -19,41 +19,52 @@ export default class FilesList extends React.Component super(props); this.state = { loading: false, + errors: [], }; } _handle_onAddFile = (files) => { - console.log("_handle_onAddFile", files); + const errors = []; - const { name, onAddFile } = this.props; - concatSeries(files, (file, callback) => + this.setState({ errors: [] }, () => { - this.setState({ loading: true }, () => + const { name, onAddFile } = this.props; + concatSeries(files, (file, callback) => { - uploadAttachmentFile(file) - .then((saved) => + if(file.size > (1024 * 1024 * 5)) { - console.log("FilesList", "_handle_onAddFile()", { saved }); - callback(null, [ saved ]); - }) - .catch((error) => - { - console.error(error); + errors.push(file.name); + this.setState({ errors }); + callback(null, []); - }); + } + else + { + this.setState({ loading: true }, () => + { + uploadAttachmentFile(file) + .then((saved) => + { + callback(null, [ saved ]); + }) + .catch((error) => + { + console.error(error); + callback(null, []); + }); + }); + } + }, (error, saved_files) => + { + onAddFile(name, saved_files); + this.setState({ loading: false }); }); - }, (error, saved_files) => - { - console.log("saved_files", saved_files); - onAddFile(name, saved_files); - this.setState({ loading: false }); }); } _handle_onRemoveFile = (file) => { - console.log("_handle_onRemoveFile", { file: file }); const { name, onRemoveFile } = this.props; removeAttachmentFile(file.id) @@ -69,9 +80,7 @@ export default class FilesList extends React.Component _renderFileName = (name) => { - console.log("FilesList", "_renderFileName", { name }); let chunks = name.split(/(.{19})/).filter(O => O); - console.log({chunks}); if(chunks.length > 2) { chunks = chunks.slice(0, 2); @@ -95,60 +104,73 @@ export default class FilesList extends React.Component render() { const { files, checking, title, maxFiles = 5, } = this.props; - const { loading } = this.state; - - console.log("FilesList", "files", files); + const { loading, errors } = this.state; return ( -
- - { files.map((file, index) => { - if(file.name === undefined) { return null; } - return ( -
-
-

{ this._renderFileName(file.name) }{/*}Постановление{*/}

-
- { !checking && ( -
this._handle_onRemoveFile(file) }> - -
- ) } -
- ) - }) } - - { loading && ( -
-
-
- -
-
+ <> + { errors.length > 0 && + ( +
+ + + +

Ошибка + { errors.map((filename, index) => ( + Файл «{ filename }» превышает допустимый лимит в 5мб и не может быть загружен.
+ )) } +

) } +
- { files.length < (loading ? maxFiles - 1 : maxFiles) && !checking && ( - this._handle_onAddFile(acceptedFiles) }> - { ({getRootProps, getInputProps}) => ( -
-
-
- - - - - - - + { files.map((file, index) => { + if(file.name === undefined) { return null; } + return ( +
+
+

{ this._renderFileName(file.name) }{/*}Постановление{*/}

- + { !checking && ( +
this._handle_onRemoveFile(file) }> + +
+ ) }
- ) } - - ) } + ) + }) } -
+ { loading && ( +
+
+
+ +
+
+
+ ) } + + { files.length < (loading ? maxFiles - 1 : maxFiles) && !checking && ( + this._handle_onAddFile(acceptedFiles) }> + { ({getRootProps, getInputProps}) => ( +
+
+
+ + + + + + + +
+ +
+ ) } +
+ ) } + +
+ ) } } \ No newline at end of file diff --git a/pages/api/suggests/address.js b/pages/api/suggests/address.js index b3a4433..ba46eff 100644 --- a/pages/api/suggests/address.js +++ b/pages/api/suggests/address.js @@ -13,55 +13,60 @@ export default async function handler(req, res) { await cors(req, res); - if(req.headers.cookie !== undefined) + return new Promise(async (resolve) => { - const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - - if(cookies.jwt !== undefined && cookies.jwt !== null) + if(req.headers.cookie !== undefined) { - if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) + const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); + + if(cookies.jwt !== undefined && cookies.jwt !== null) { - try + if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) { - const { query, } = req.body; - - axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address`, { query }, { - httpAgent: keepAliveAgent, - headers: { - "Content-Type": "application/json", - "Authorization": `Token ${ process.env.DADATA_API_KEY }`, - "X-Secret": process.env.DADATA_SECRET_KEY - }, - }) - .then((api_response) => + try { - //console.log("RESPONSE"); - //console.log(api_response.data); + const { query, } = req.body; - res.status(200).send(api_response.data); - }) - .catch((error) => + axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address`, { query }, { + httpAgent: keepAliveAgent, + headers: { + "Content-Type": "application/json", + "Authorization": `Token ${ process.env.DADATA_API_KEY }`, + "X-Secret": process.env.DADATA_SECRET_KEY + }, + }) + .then((api_response) => + { + res.status(200).send(api_response.data); + resolve(); + }) + .catch((error) => + { + console.log("error"); + console.error(error); + + res.status(500).send(); + resolve(); + }); + } + catch(e) { - console.log("error"); - console.error(error); - + console.error(e); res.status(500).send(); - }); + resolve(); + } } - catch(e) + else { - console.error(e); - res.status(500).send(); + res.status(403).send(); + resolve(); } } else { res.status(403).send(); + resolve(); } } - else - { - res.status(403).send(); - } - } + }); } \ No newline at end of file diff --git a/pages/api/suggests/document/check.js b/pages/api/suggests/document/check.js index 555b4e5..dc6602c 100644 --- a/pages/api/suggests/document/check.js +++ b/pages/api/suggests/document/check.js @@ -13,52 +13,60 @@ export default async function handler(req, res) { await cors(req, res); - if(req.headers.cookie !== undefined) + return new Promise(async (resolve) => { - const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - - if(cookies.jwt !== undefined && cookies.jwt !== null) + if(req.headers.cookie !== undefined) { - if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) - { - try - { - const { seria, number } = req.body; + const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - axios.post(`https://cleaner.dadata.ru/api/v1/clean/passport`, [ `${ seria } ${ number }` ], { - httpAgent: keepAliveAgent, - headers: { - "Content-Type": "application/json", - "Authorization": `Token ${ process.env.DADATA_API_KEY }`, - "X-Secret": process.env.DADATA_SECRET_KEY - }, - }) - .then((api_response) => - { - res.status(200).send(api_response.data); - }) - .catch((error) => - { - console.log("error"); - console.error(error); - - res.status(500).send(); - }); - } - catch(e) + if(cookies.jwt !== undefined && cookies.jwt !== null) + { + if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) { - console.error(e); - res.status(500).send(); + try + { + const { seria, number } = req.body; + + axios.post(`https://cleaner.dadata.ru/api/v1/clean/passport`, [ `${ seria } ${ number }` ], { + httpAgent: keepAliveAgent, + headers: { + "Content-Type": "application/json", + "Authorization": `Token ${ process.env.DADATA_API_KEY }`, + "X-Secret": process.env.DADATA_SECRET_KEY + }, + }) + .then((api_response) => + { + res.status(200).send(api_response.data); + resolve(); + }) + .catch((error) => + { + console.log("error"); + console.error(error); + + res.status(500).send(); + resolve(); + }); + } + catch(e) + { + console.error(e); + res.status(500).send(); + resolve(); + } } + else + { + res.status(403).send(); + resolve(); + } } else { res.status(403).send(); - } + resolve(); + } } - else - { - res.status(403).send(); - } - } + }); } \ No newline at end of file diff --git a/pages/api/suggests/document/issuer.js b/pages/api/suggests/document/issuer.js index bce094d..677dec3 100644 --- a/pages/api/suggests/document/issuer.js +++ b/pages/api/suggests/document/issuer.js @@ -13,52 +13,60 @@ export default async function handler(req, res) { await cors(req, res); - if(req.headers.cookie !== undefined) + return new Promise(async (resolve) => { - const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - - if(cookies.jwt !== undefined && cookies.jwt !== null) + if(req.headers.cookie !== undefined) { - if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) - { - try - { - const { query, max } = req.body; + const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/fms_unit`, { query, count: max ? max : 10 }, { - httpAgent: keepAliveAgent, - headers: { - "Content-Type": "application/json", - "Authorization": `Token ${ process.env.DADATA_API_KEY }`, - "X-Secret": process.env.DADATA_SECRET_KEY - }, - }) - .then((api_response) => - { - res.status(200).send(api_response.data); - }) - .catch((error) => - { - console.log("error"); - console.error(error); - - res.status(500).send(); - }); - } - catch(e) + if(cookies.jwt !== undefined && cookies.jwt !== null) + { + if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) { - console.error(e); - res.status(500).send(); + try + { + const { query, max } = req.body; + + axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/fms_unit`, { query, count: max ? max : 10 }, { + httpAgent: keepAliveAgent, + headers: { + "Content-Type": "application/json", + "Authorization": `Token ${ process.env.DADATA_API_KEY }`, + "X-Secret": process.env.DADATA_SECRET_KEY + }, + }) + .then((api_response) => + { + res.status(200).send(api_response.data); + resolve(); + }) + .catch((error) => + { + console.log("error"); + console.error(error); + + res.status(500).send(); + resolve(); + }); + } + catch(e) + { + console.error(e); + res.status(500).send(); + resolve(); + } } + else + { + res.status(403).send(); + resolve(); + } } else { res.status(403).send(); - } + resolve(); + } } - else - { - res.status(403).send(); - } - } + }); } \ No newline at end of file diff --git a/pages/api/suggests/inn.js b/pages/api/suggests/inn.js index c712c2d..f4b4617 100644 --- a/pages/api/suggests/inn.js +++ b/pages/api/suggests/inn.js @@ -13,55 +13,63 @@ export default async function handler(req, res) { await cors(req, res); - if(req.headers.cookie !== undefined) + return new Promise(async (resolve) => { - const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - - if(cookies.jwt !== undefined && cookies.jwt !== null) + if(req.headers.cookie !== undefined) { - if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) + const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); + + if(cookies.jwt !== undefined && cookies.jwt !== null) { - try + if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) { - const { query, } = req.body; - - axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party`, { query }, { - httpAgent: keepAliveAgent, - headers: { - "Content-Type": "application/json", - "Authorization": `Token ${ process.env.DADATA_API_KEY }`, - "X-Secret": process.env.DADATA_SECRET_KEY - }, - }) - .then((api_response) => + try { - //console.log("RESPONSE"); - //console.log(api_response.data); + const { query, } = req.body; - res.status(200).send(api_response.data); - }) - .catch((error) => + axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party`, { query }, { + httpAgent: keepAliveAgent, + headers: { + "Content-Type": "application/json", + "Authorization": `Token ${ process.env.DADATA_API_KEY }`, + "X-Secret": process.env.DADATA_SECRET_KEY + }, + }) + .then((api_response) => + { + //console.log("RESPONSE"); + //console.log(api_response.data); + + res.status(200).send(api_response.data); + resolve(); + }) + .catch((error) => + { + console.log("error"); + console.error(error); + + res.status(500).send(); + resolve(); + }); + } + catch(e) { - console.log("error"); - console.error(error); - + console.error(e); res.status(500).send(); - }); + resolve(); + } } - catch(e) + else { - console.error(e); - res.status(500).send(); - } + res.status(403).send(); + resolve(); + } } else { res.status(403).send(); - } + resolve(); + } } - else - { - res.status(403).send(); - } - } + }); } \ No newline at end of file diff --git a/pages/api/suggests/middlename.js b/pages/api/suggests/middlename.js index 0fa6f47..2b66e55 100644 --- a/pages/api/suggests/middlename.js +++ b/pages/api/suggests/middlename.js @@ -13,52 +13,60 @@ export default async function handler(req, res) { await cors(req, res); - if(req.headers.cookie !== undefined) + return new Promise(async (resolve) => { - const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - - if(cookies.jwt !== undefined && cookies.jwt !== null) + if(req.headers.cookie !== undefined) { - if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) - { - try - { - const { query, } = req.body; + const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/fio`, { query, "parts": ["PATRONYMIC"] }, { - httpAgent: keepAliveAgent, - headers: { - "Content-Type": "application/json", - "Authorization": `Token ${ process.env.DADATA_API_KEY }`, - "X-Secret": process.env.DADATA_SECRET_KEY - }, - }) - .then((api_response) => - { - res.status(200).send(api_response.data); - }) - .catch((error) => - { - console.log("error"); - console.error(error); - - res.status(500).send(); - }); - } - catch(e) + if(cookies.jwt !== undefined && cookies.jwt !== null) + { + if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) { - console.error(e); - res.status(500).send(); + try + { + const { query, } = req.body; + + axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/fio`, { query, "parts": ["PATRONYMIC"] }, { + httpAgent: keepAliveAgent, + headers: { + "Content-Type": "application/json", + "Authorization": `Token ${ process.env.DADATA_API_KEY }`, + "X-Secret": process.env.DADATA_SECRET_KEY + }, + }) + .then((api_response) => + { + res.status(200).send(api_response.data); + resolve(); + }) + .catch((error) => + { + console.log("error"); + console.error(error); + + res.status(500).send(); + resolve(); + }); + } + catch(e) + { + console.error(e); + res.status(500).send(); + resolve(); + } } + else + { + res.status(403).send(); + resolve(); + } } else { res.status(403).send(); - } + resolve(); + } } - else - { - res.status(403).send(); - } - } + }); } \ No newline at end of file diff --git a/pages/api/suggests/name.js b/pages/api/suggests/name.js index 85f06c2..79622a2 100644 --- a/pages/api/suggests/name.js +++ b/pages/api/suggests/name.js @@ -13,52 +13,60 @@ export default async function handler(req, res) { await cors(req, res); - if(req.headers.cookie !== undefined) + return new Promise(async (resolve) => { - const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - - if(cookies.jwt !== undefined && cookies.jwt !== null) + if(req.headers.cookie !== undefined) { - if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) - { - try - { - const { query, parts } = req.body; + const cookies = cookie.parse(req.headers?.cookie ? req.headers?.cookie : ""); - axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/fio`, { query, "parts": parts }, { - httpAgent: keepAliveAgent, - headers: { - "Content-Type": "application/json", - "Authorization": `Token ${ process.env.DADATA_API_KEY }`, - "X-Secret": process.env.DADATA_SECRET_KEY - }, - }) - .then((api_response) => - { - res.status(200).send(api_response.data); - }) - .catch((error) => - { - console.log("error"); - console.error(error); - - res.status(500).send(); - }); - } - catch(e) + if(cookies.jwt !== undefined && cookies.jwt !== null) + { + if(jwt.verify(cookies.jwt, process.env.JWT_SECRET_CLIENT)) { - console.error(e); - res.status(500).send(); + try + { + const { query, parts } = req.body; + + axios.post(`https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/fio`, { query, "parts": parts }, { + httpAgent: keepAliveAgent, + headers: { + "Content-Type": "application/json", + "Authorization": `Token ${ process.env.DADATA_API_KEY }`, + "X-Secret": process.env.DADATA_SECRET_KEY + }, + }) + .then((api_response) => + { + res.status(200).send(api_response.data); + resolve(); + }) + .catch((error) => + { + console.log("error"); + console.error(error); + + res.status(500).send(); + resolve(); + }); + } + catch(e) + { + console.error(e); + res.status(500).send(); + resolve(); + } } + else + { + res.status(403).send(); + resolve(); + } } else { res.status(403).send(); - } + resolve(); + } } - else - { - res.status(403).send(); - } - } + }); } \ No newline at end of file