From 98e43fd1ca4173795f271c9d4a34683cb6237edb Mon Sep 17 00:00:00 2001 From: kanishka-sahoo Date: Sat, 26 Sep 2026 14:13:12 +0000 Subject: [PATCH] Fix file request limits for non-admin users - Set guest upload limits even when no file requests exist - Add coverage for non-admin and admin configurations --- internal/webserver/Webserver.go | 10 ++++++---- internal/webserver/Webserver_test.go | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/internal/webserver/Webserver.go b/internal/webserver/Webserver.go index 6b707e5b..a9dd4e69 100644 --- a/internal/webserver/Webserver.go +++ b/internal/webserver/Webserver.go @@ -872,6 +872,12 @@ func (u *AdminView) convertGlobalConfig(view int, user models.User) *AdminView { u.Users = append(u.Users, userWithUploads) } case ViewFileRequests: + // Limits must be set regardless of existing file requests, otherwise a non-admin + // user without any file requests is shown no limits in the UI + if !user.IsAdmin() { + u.FileRequestMaxFiles = configuration.GetEnvironment().MaxFilesGuestUpload + u.FileRequestMaxSize = configuration.GetEnvironment().MaxSizeGuestUploadMb + } for _, fileRequest := range filerequest.GetAll() { // Double-checking if the owner of the file request exists // If the user was manually deleted from the database, this could lead to a crash @@ -885,10 +891,6 @@ func (u *AdminView) convertGlobalConfig(view int, user models.User) *AdminView { } fileRequest.Files = sortMetaData(fileRequest.Files) u.FileRequests = append(u.FileRequests, fileRequest) - if !user.IsAdmin() { - u.FileRequestMaxFiles = configuration.GetEnvironment().MaxFilesGuestUpload - u.FileRequestMaxSize = configuration.GetEnvironment().MaxSizeGuestUploadMb - } } } diff --git a/internal/webserver/Webserver_test.go b/internal/webserver/Webserver_test.go index f5e2bf8a..b913608b 100644 --- a/internal/webserver/Webserver_test.go +++ b/internal/webserver/Webserver_test.go @@ -671,3 +671,20 @@ func TestServeWasmE2E(t *testing.T) { IsHtml: false, }) } + +func TestConvertGlobalConfigFileRequestLimits(t *testing.T) { + env := configuration.GetEnvironment() + // Non-admin user without any file requests must still receive the server limits + user := models.User{Id: 9999, UserLevel: models.UserLevelUser} + view := (&AdminView{}).convertGlobalConfig(ViewFileRequests, user) + test.IsEqualInt(t, len(view.FileRequests), 0) + test.IsEqualInt(t, view.FileRequestMaxFiles, env.MaxFilesGuestUpload) + test.IsEqualInt(t, view.FileRequestMaxSize, env.MaxSizeGuestUploadMb) + test.IsEqualBool(t, view.FileRequestMaxFiles > 0, true) + test.IsEqualBool(t, view.FileRequestMaxSize > 0, true) + + user.UserLevel = models.UserLevelAdmin + view = (&AdminView{}).convertGlobalConfig(ViewFileRequests, user) + test.IsEqualInt(t, view.FileRequestMaxFiles, 0) + test.IsEqualInt(t, view.FileRequestMaxSize, 0) +}