aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared/assetdb.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-04-20 00:03:44 +0100
committerMohamed Bassem <me@mbassem.com>2024-04-20 00:05:31 +0100
commit12c682b357f09cbba7d66d3dbb6d41dda3b46c7b (patch)
tree8024c4ff324a16db9363a589b47d34a738e53e19 /packages/shared/assetdb.ts
parente12fe024a9c837dc88569f80f3f75ead85bdfbde (diff)
downloadkarakeep-12c682b357f09cbba7d66d3dbb6d41dda3b46c7b.tar.zst
fix: Ensure that downloaded asset images are from the allowed content types
Diffstat (limited to 'packages/shared/assetdb.ts')
-rw-r--r--packages/shared/assetdb.ts10
1 files changed, 10 insertions, 0 deletions
diff --git a/packages/shared/assetdb.ts b/packages/shared/assetdb.ts
index 1033c594..c070ad54 100644
--- a/packages/shared/assetdb.ts
+++ b/packages/shared/assetdb.ts
@@ -6,6 +6,13 @@ import serverConfig from "./config";
const ROOT_PATH = path.join(serverConfig.dataDir, "assets");
+export const SUPPORTED_ASSET_TYPES = new Set([
+ "image/jpeg",
+ "image/png",
+ "image/webp",
+ "application/pdf",
+]);
+
function getAssetDir(userId: string, assetId: string) {
return path.join(ROOT_PATH, userId, assetId);
}
@@ -30,6 +37,9 @@ export async function saveAsset({
asset: Buffer;
metadata: z.infer<typeof zAssetMetadataSchema>;
}) {
+ if (!SUPPORTED_ASSET_TYPES.has(metadata.contentType)) {
+ throw new Error("Unsupported asset type");
+ }
const assetDir = getAssetDir(userId, assetId);
await fs.promises.mkdir(assetDir, { recursive: true });