From fc41b3a78ab8e9c93e6d0c189071bbce2ecd6e93 Mon Sep 17 00:00:00 2001 From: Skyler Calaman <54462713+Blckbrry-Pi@users.noreply.github.com> Date: Sun, 31 Mar 2024 20:42:23 -0400 Subject: [PATCH 1/2] feat(users): `users` profile pictures --- modules/uploads/public.ts | 4 ++++ modules/users/config.ts | 4 +++- modules/users/scripts/prepare_profile_picture.ts | 5 +++-- tests/basic/backend.json | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 modules/uploads/public.ts diff --git a/modules/uploads/public.ts b/modules/uploads/public.ts new file mode 100644 index 00000000..aeb6c4a9 --- /dev/null +++ b/modules/uploads/public.ts @@ -0,0 +1,4 @@ +export const __CANONICAL_MODULE_NAME = "uploads"; + +export type { UploadSize } from "./utils/data_size.ts"; +export { getBytes } from "./utils/data_size.ts"; diff --git a/modules/users/config.ts b/modules/users/config.ts index 4a007119..3c3b6f9c 100644 --- a/modules/users/config.ts +++ b/modules/users/config.ts @@ -1,5 +1,7 @@ +import { Module } from "./module.gen.ts"; + export interface Config { - maxProfilePictureBytes: number; + maxProfilePictureSize: Module.uploads.UploadSize; allowedMimes?: string[]; } diff --git a/modules/users/scripts/prepare_profile_picture.ts b/modules/users/scripts/prepare_profile_picture.ts index 84305295..c7bca1f4 100644 --- a/modules/users/scripts/prepare_profile_picture.ts +++ b/modules/users/scripts/prepare_profile_picture.ts @@ -1,4 +1,4 @@ -import { ScriptContext, RuntimeError } from "../module.gen.ts"; +import { ScriptContext, RuntimeError, Module } from "../module.gen.ts"; import { DEFAULT_MIME_TYPES } from "../config.ts"; export interface Request { @@ -30,7 +30,8 @@ export async function run( } // Ensure the file is within the maximum configured size for a PFP - if (BigInt(req.contentLength) > ctx.userConfig.maxProfilePictureBytes) { + const maxBytes = Module.uploads.getBytes(ctx.userConfig.maxProfilePictureSize); + if (BigInt(req.contentLength) > maxBytes) { throw new RuntimeError( "file_too_large", { cause: `File is too large (${req.contentLength} bytes)` }, diff --git a/tests/basic/backend.json b/tests/basic/backend.json index 463f11ab..d6e80fec 100644 --- a/tests/basic/backend.json +++ b/tests/basic/backend.json @@ -22,7 +22,7 @@ "users": { "registry": "local", "config": { - "maxProfilePictureBytes": 1048576 + "maxProfilePictureSize": "1mib" } }, "uploads": { From 6bc5ffa60646da68eca43562532f4acc62eba196 Mon Sep 17 00:00:00 2001 From: Skyler Calaman <54462713+Blckbrry-Pi@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:37:19 -0400 Subject: [PATCH 2/2] feat(users): Update `users` config to use `UploadSize` from `uploads --- modules/uploads/module.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/uploads/module.json b/modules/uploads/module.json index b593423d..0e17f650 100644 --- a/modules/uploads/module.json +++ b/modules/uploads/module.json @@ -1,4 +1,17 @@ { + "name": "Uploads", + "description": "Upload & store files in an object store.", + "icon": "file-arrow-up", + "tags": [ + "core", + "utility" + ], + "authors": [ + "rivet-gg", + "Blckbrry-Pi", + "NathanFlurry" + ], + "status": "stable", "scripts": { "prepare": { "name": "Prepare Upload",