mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-08 04:55:06 +09:00
have env check for variables
This commit is contained in:
1 parent
3b935618fc
commit
cd7a924ffe
3 files changed
+34
-7
No files matched your search
@@ -14,6 +14,12 @@
|
||||
require("dotenv").config();
|
||||
|
||||
const REQUIRED_ENVS = ["DATABASE_URL", "AUTH_SECRET"];
|
||||
const S3_KEYS = [
|
||||
"S3_ENDPOINT",
|
||||
"S3_REGION",
|
||||
"S3_SECRET_ACCESS_KEY",
|
||||
"S3_ACCESS_KEY_ID",
|
||||
];
|
||||
|
||||
const errors = [];
|
||||
|
||||
@@ -30,6 +36,21 @@ if (process.env.DEPLOYMENT_ENVIRONMENT === "production") {
|
||||
}
|
||||
}
|
||||
|
||||
// check for when user has some S3 env variables but not all required
|
||||
if (
|
||||
S3_KEYS.some((key) => Object.keys(process.env).includes(key)) &&
|
||||
!S3_KEYS.every((key) => Object.keys(process.env).includes(key))
|
||||
) {
|
||||
const notIncluded = S3_KEYS.filter(
|
||||
(key) => !Object.keys(process.env).includes(key)
|
||||
);
|
||||
errors.push(
|
||||
`👉 You don't have all the necessary envriroment variables to have S3 asset hosting, you are missing ${notIncluded.join(
|
||||
","
|
||||
)}`
|
||||
);
|
||||
}
|
||||
|
||||
if (errors.length) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error("❌ Invalid environment variables:");
|
||||
|
||||
@@ -1 +1,7 @@
|
||||
export const DEFAULT_UPLPOAD_PATH = "uploads";
|
||||
export const S3_ENV_KEYS = [
|
||||
"S3_ENDPOINT",
|
||||
"S3_REGION",
|
||||
"S3_SECRET_ACCESS_KEY",
|
||||
"S3_ACCESS_KEY_ID",
|
||||
];
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DEFAULT_UPLPOAD_PATH } from "./constants";
|
||||
import { DEFAULT_UPLPOAD_PATH, S3_ENV_KEYS } from "./constants";
|
||||
import path from "path";
|
||||
import {
|
||||
unstable_createFileUploadHandler,
|
||||
@@ -8,6 +8,10 @@ import { s3UploadHandler } from "./targets/s3/handler";
|
||||
import { uploadToS3 } from "./targets/s3/uploader";
|
||||
import { uploadToDisk } from "./targets/disk/upload";
|
||||
|
||||
const isS3Upload = Boolean(
|
||||
S3_ENV_KEYS.every((key) => Object.keys(process.env).includes(key))
|
||||
);
|
||||
|
||||
export const uploadAsset = async ({
|
||||
request,
|
||||
projectId,
|
||||
@@ -19,17 +23,13 @@ export const uploadAsset = async ({
|
||||
db: unknown;
|
||||
dirname: string;
|
||||
}) => {
|
||||
const IS_S3_UPLOAD =
|
||||
process.env.S3_ENDPOINT &&
|
||||
process.env.S3_SECRET_ACCESS_KEY &&
|
||||
process.env.S3_ACCESS_KEY_ID;
|
||||
const uploads = path.join(dirname, "../public");
|
||||
const folderInPublic = process.env.FILE_UPLOAD_PATH || DEFAULT_UPLPOAD_PATH;
|
||||
const directory = path.join(uploads, folderInPublic);
|
||||
try {
|
||||
const formData = await unstable_parseMultipartFormData(
|
||||
request,
|
||||
IS_S3_UPLOAD
|
||||
isS3Upload
|
||||
? (file) => s3UploadHandler(file)
|
||||
: unstable_createFileUploadHandler({
|
||||
maxPartSize: 10_000_000,
|
||||
@@ -37,7 +37,7 @@ export const uploadAsset = async ({
|
||||
file: ({ filename }) => filename,
|
||||
})
|
||||
);
|
||||
if (IS_S3_UPLOAD) {
|
||||
if (isS3Upload) {
|
||||
await uploadToS3({
|
||||
projectId,
|
||||
formData,
|
||||
|
||||
Reference in new issue
Block a user