diff --git a/packages/backend-core/src/security/encryption.ts b/packages/backend-core/src/security/encryption.ts index 0147b45c6c..acfa6616bd 100644 --- a/packages/backend-core/src/security/encryption.ts +++ b/packages/backend-core/src/security/encryption.ts @@ -120,12 +120,24 @@ export async function decryptFile( const stretched = stretchString(secret, salt) const decipher = crypto.createDecipheriv(ALGO, stretched, iv) - inputFile.pipe(decipher).pipe(zlib.createGunzip()).pipe(outputFile) + const unzip = zlib.createGunzip() - return new Promise(r => { - outputFile.on("finish", () => { + inputFile.pipe(decipher).pipe(unzip).pipe(outputFile) + + return new Promise((res, rej) => { + inputFile.on("finish", () => { outputFile.close() - r() + res() + }) + + decipher.on("error", e => { + outputFile.close() + rej(e) + }) + + unzip.on("error", e => { + outputFile.close() + rej(e) }) }) } diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte index ab42d27023..f22a81a2a1 100644 --- a/packages/builder/src/components/start/CreateAppModal.svelte +++ b/packages/builder/src/components/start/CreateAppModal.svelte @@ -17,6 +17,7 @@ import TemplateCard from "components/common/TemplateCard.svelte" import createFromScratchScreen from "builderStore/store/screenTemplates/createFromScratchScreen" import { Roles } from "constants/backend" + import { lowercase } from "helpers" export let template @@ -190,8 +191,11 @@ try { await createNewApp() } catch (e) { - console.log(e) - notifications.error("Error creating app") + let message = "Error creating app" + if (e.message) { + message += `: ${lowercase(e.message)}` + } + notifications.error(message) return false } }, diff --git a/packages/server/src/sdk/app/backups/imports.ts b/packages/server/src/sdk/app/backups/imports.ts index 0bc415badb..619f888329 100644 --- a/packages/server/src/sdk/app/backups/imports.ts +++ b/packages/server/src/sdk/app/backups/imports.ts @@ -134,7 +134,7 @@ async function decryptFiles(path: string, password: string) { } } catch (err: any) { if (err.message === "incorrect header check") { - throw new Error("Wrong password") + throw new Error("File cannot be imported") } throw err }