From 5b7157f4226707338f2397fae6bbd2b0646a4f94 Mon Sep 17 00:00:00 2001 From: TekH Date: Fri, 4 Sep 2026 01:07:04 +0200 Subject: [PATCH] =?UTF-8?q?SF-74:=20Server=20=E2=80=94=20CustomImagesContr?= =?UTF-8?q?oller=20(GET=20/api/CustomImages),=20DI=20registration,=20appse?= =?UTF-8?q?ttings=20logo=20config,=20App.razor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/App.razor | 43 +++++++++++++++++++ .../Controllers/CustomImagesController.cs | 26 +++++++++++ .../EnvelopeGenerator.Server/Program.cs | 5 +++ .../EnvelopeGenerator.Server/appsettings.json | 8 ++-- 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/CustomImagesController.cs diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/App.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/App.razor index 363c9a67..15f19278 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/App.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/App.razor @@ -10,15 +10,58 @@ + + + +
+
+
+
+
+ + diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/CustomImagesController.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/CustomImagesController.cs new file mode 100644 index 00000000..3dc6fbba --- /dev/null +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/CustomImagesController.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using EnvelopeGenerator.Domain.Constants; +using EnvelopeGenerator.Server.Models; + +namespace EnvelopeGenerator.Server.Controllers; + +/// +/// Exposes the CustomImages configuration (signFLOW logo + company logo) to WASM clients. +/// Values are sourced from appsettings.json "CustomImages" section via Options Pattern. +/// +/// To change logos per deployment: update "CustomImages.App.Src", "App.Height", +/// "Company.Src", "Company.Height" in appsettings.json — no code change required. +/// +[ApiController] +[Route("api/[controller]")] +[Authorize(Policy = AuthPolicy.SenderOrReceiver)] +public class CustomImagesController(IOptions options) : ControllerBase +{ + /// + /// Returns the signFLOW app logo and company logo configuration. + /// + [HttpGet] + public ActionResult Get() => Ok(options.Value); +} diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs index d8aadebd..d8de46d4 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs @@ -326,12 +326,17 @@ try // User Preferences (theme, dark mode, grid layouts — stored in TBDD_CACHE) // Registration handled by Infrastructure DependencyInjection (AddEnvelopeGeneratorInfrastructureServices) + // CustomImages — logo sources and heights, configurable per deployment via appsettings.json + builder.Services.Configure( + config.GetSection(EnvelopeGenerator.Server.Models.CustomImagesOptions.SectionName)); + // Client-side services that MainLayout depends on must also be registered here // so that Blazor Auto prerender (SSR pass) can resolve them on the server. // ThemeService.InitializeAsync() uses IJSRuntime but is only called in OnAfterRenderAsync // (never during prerender), so registering it server-side is safe. builder.Services.AddScoped(); builder.Services.AddScoped(); + builder.Services.AddScoped(); // Business Services (Server specific) builder.Services.AddScoped(); diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/appsettings.json b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/appsettings.json index e763a015..a3a63a85 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/appsettings.json +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/appsettings.json @@ -145,15 +145,17 @@ "CustomImages": { "App": { "Src": "/img/DD_signFLOW_LOGO.png", + "Height": "28px", "Classes": { - "Main": "signFlow-logo" + "Main": "signflow-app-logo" } }, "Company": { "Src": "/img/digital_data.svg", + "Height": "33px", "Classes": { - "Show": "dd-show-logo", - "Locked": "dd-locked-logo" + "Show": "signflow-company-logo", + "Locked": "signflow-company-logo" } } },