From ada76d503010d48825b5b8faa0b83d4484638ae3 Mon Sep 17 00:00:00 2001 From: TekH Date: Fri, 5 Sep 2025 14:42:04 +0200 Subject: [PATCH] refactor(HomeController): add SetLanguage and GetLanguages endpoints --- .../Controllers/HomeController.cs | 31 ------------------- .../Controllers/LocalizationController.cs | 26 ++++++++++++++-- EnvelopeGenerator.Web/wwwroot/js/network.js | 6 ++-- 3 files changed, 27 insertions(+), 36 deletions(-) diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs index 18159ca3..ee359a13 100644 --- a/EnvelopeGenerator.Web/Controllers/HomeController.cs +++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs @@ -499,37 +499,6 @@ public class HomeController : ViewControllerBase } } - [Authorize(Roles = ReceiverRole.FullyAuth)] - [HttpGet("/IsAuthenticated")] - public IActionResult IsAuthenticated() - { - var envelopeUuid = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; - var receiverSignature = User.FindFirst(ClaimTypes.Hash)?.Value; - return Ok(new { EnvelopeUuid = envelopeUuid, ReceiverSignature = receiverSignature }); - } - - [HttpPost("/lang/{culture}")] - public IActionResult SetLanguage([FromRoute] string culture) - { - try - { - if (!_cultures.Languages.Contains(culture)) - return BadRequest(); - - Response.Cookies.SetCulture(culture); - - return Redirect(Request.Headers["Referer"].ToString()); - } - catch(Exception ex) - { - _logger.LogError(ex, "{Message}", ex.Message); - return StatusCode(statusCode: StatusCodes.Status500InternalServerError); - } - } - - [HttpGet("/lang")] - public IActionResult GetLanguages() => Ok(_cultures.Languages); - [HttpGet("Error404")] public IActionResult Error404() => this.ViewError404(); } \ No newline at end of file diff --git a/EnvelopeGenerator.Web/Controllers/LocalizationController.cs b/EnvelopeGenerator.Web/Controllers/LocalizationController.cs index 3aaf5ec7..0c873445 100644 --- a/EnvelopeGenerator.Web/Controllers/LocalizationController.cs +++ b/EnvelopeGenerator.Web/Controllers/LocalizationController.cs @@ -1,4 +1,6 @@ using EnvelopeGenerator.Application.Resources; +using EnvelopeGenerator.Web.Extensions; +using EnvelopeGenerator.Web.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Localization; @@ -8,11 +10,17 @@ namespace EnvelopeGenerator.Web.Controllers [Route("api/[controller]")] public class LocalizationController : ControllerBase { + private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; - public LocalizationController(IStringLocalizer localizer) + private readonly Cultures _cultures; + + public LocalizationController(IStringLocalizer localizer, Cultures cultures, ILogger logger) { _localizer = localizer; + _cultures = cultures; + _logger = logger; } [HttpGet] @@ -23,5 +31,19 @@ namespace EnvelopeGenerator.Web.Controllers ?? _localizer.GetAllStrings().Where(ls => !ignore.Contains(ls.Name)).ToDictionary(ls => ls.Name, ls => ls.Value); ; return Ok(pairs); } + + [HttpPost("lang/{culture}")] + public IActionResult SetLanguage([FromRoute] string culture) + { + if (!_cultures.Languages.Contains(culture)) + return BadRequest(); + + Response.Cookies.SetCulture(culture); + + return Redirect(Request.Headers["Referer"].ToString()); + } + + [HttpGet("lang")] + public IActionResult GetLanguages() => Ok(_cultures.Languages); } -} +} \ No newline at end of file diff --git a/EnvelopeGenerator.Web/wwwroot/js/network.js b/EnvelopeGenerator.Web/wwwroot/js/network.js index 4baf0676..a531e7e1 100644 --- a/EnvelopeGenerator.Web/wwwroot/js/network.js +++ b/EnvelopeGenerator.Web/wwwroot/js/network.js @@ -26,7 +26,7 @@ function postEnvelope(annotations) { async function setLangAsync(language, flagCode) { document.getElementById('selectedFlag').className = 'fi ' + flagCode + ' me-2'; - await fetch(`/lang/${language}`, { + await fetch(`/api/localization/lang/${language}`, { method: 'POST', headers: { 'Content-Type': 'application/json' @@ -36,7 +36,7 @@ async function setLangAsync(language, flagCode) { async function setLanguage(language) { - const hasLang = await fetch('/lang', { + const hasLang = await fetch('/api/localization/lang', { method: 'GET', headers: { 'Content-Type': 'application/json' @@ -47,7 +47,7 @@ async function setLanguage(language) { .catch(err => false); if (hasLang) - return await fetch(`/lang/${language}`, { + return await fetch(`/api/localization/lang/${language}`, { method: 'POST', headers: { 'Content-Type': 'application/json' } })