have env check for variables

This commit is contained in:
Sara Vieira committed 2022-07-19 12:37:45 +02:00
1 parent 3b935618fc
commit cd7a924ffe
3 files changed
+34 -7

No files matched your search

+21
View File
@@ -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:");
+6
View File
@@ -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",
];
+7 -7
View File
@@ -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,