Refaktorisierung der Lokalisierung und DTO-Integration

- Ersetzung von ITranslateService durch IStringLocalizer<X> für verbesserte Lokalisierung.
- Aktualisierung der DTO-Klassen entsprechend der neuesten Core.DTO-Struktur.
- Integration der neuen Klassen Result und DataResult aus Core.DTO für standardisierte Serviceantworten.
This commit is contained in:
Developer 02
2024-05-02 17:36:53 +02:00
parent dbe3743660
commit 0abdbfa705
108 changed files with 1089 additions and 126 deletions

View File

@@ -9,6 +9,8 @@ using DigitalData.UserManager.Application;
using DigitalData.UserManager.Application.DTOs.Auth;
using DigitalData.Core.Contracts.Application;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Localization;
using DigitalData.Core.DTO;
namespace DigitalData.UserManager.API.Controllers
{
@@ -20,14 +22,16 @@ namespace DigitalData.UserManager.API.Controllers
private IMemoryCache _memoryCache;
private IConfiguration _configuration;
private IDirectorySearchService _dirSearchService;
private readonly IStringLocalizer<Resource> _localizer;
public AuthController(IUserService userService, IGroupOfUserService gouService, IMemoryCache memoryCache, IConfiguration configuration, IDirectorySearchService directorySearchService)
public AuthController(IUserService userService, IGroupOfUserService gouService, IMemoryCache memoryCache, IConfiguration configuration, IDirectorySearchService directorySearchService, IStringLocalizer<Resource> localizer)
{
_userService = userService;
_gouService = gouService;
_memoryCache = memoryCache;
_configuration = configuration;
_dirSearchService = directorySearchService;
_localizer = localizer;
}
[AllowAnonymous]
@@ -41,11 +45,11 @@ namespace DigitalData.UserManager.API.Controllers
bool isValid = _dirSearchService.ValidateCredentials(login.Username, login.Password);
if (!isValid)
return Unauthorized(_userService.Failed(MessageKey.UserNotFound.ToString()));
return Unauthorized(Result.Fail().Message(_localizer[Key.UserNotFound]));
var gouMsg = await _gouService.HasGroup(login.Username, "PM_USER", caseSensitive:false);
if(!gouMsg.IsSuccess)
return Unauthorized(_userService.Failed(MessageKey.UnauthorizedUser.ToString()));
return Unauthorized(Result.Fail().Message(_localizer[Key.UnauthorizedUser]));
//find the user
var uRes = await _userService.ReadByUsernameAsync(login.Username);
@@ -103,7 +107,7 @@ namespace DigitalData.UserManager.API.Controllers
if (!userDto.IsSuccess || userDto.Data is null)
{
return NotFound(_userService.Failed("User not found."));
return NotFound(Result.Fail().Message(_localizer[Key.UserNotFound]));
}
return Ok(userDto.Data);

View File

@@ -6,11 +6,8 @@ using Microsoft.Extensions.Caching.Memory;
using System.Diagnostics.CodeAnalysis;
using System.Security.Claims;
using DigitalData.UserManager.Application;
using DigitalData.UserManager.Application.DTOs.User;
using System.DirectoryServices;
using static System.Runtime.InteropServices.JavaScript.JSType;
using System.Linq;
using System.IO;
using Microsoft.Extensions.Localization;
using DigitalData.Core.DTO;
namespace DigitalData.UserManager.API.Controllers
{
@@ -23,10 +20,12 @@ namespace DigitalData.UserManager.API.Controllers
private IDirectorySearchService _dirSearchService;
private IMemoryCache _memoryCache;
private Dictionary<string, string> _customSearchFilters;
private readonly IStringLocalizer<Resource> _localizer;
public DirectoryController(IConfiguration configuration, ILogger<DirectoryController> logger, IUserService userService, IDirectorySearchService directorySearchService, IMemoryCache memoryCache)
public DirectoryController(IConfiguration configuration, ILogger<DirectoryController> logger, IStringLocalizer<Resource> localizer, IUserService userService, IDirectorySearchService directorySearchService, IMemoryCache memoryCache)
{
_logger = logger;
_localizer = localizer;
_userService = userService;
_dirSearchService = directorySearchService;
_memoryCache = memoryCache;
@@ -76,11 +75,11 @@ namespace DigitalData.UserManager.API.Controllers
bool isValid = _dirSearchService.ValidateCredentials(dirEntryUsername, searchRootCreateDto.DirEntryPassword);
if (!isValid)
return Unauthorized(_dirSearchService.Failed(MessageKey.UserNotFound.ToString()));
return Unauthorized(Result.Fail().Message(_localizer[Key.UserNotFound]));
var userResult = await _userService.ReadByUsernameAsync(dirEntryUsername);
if(!userResult.IsSuccess || userResult.Data is null)
return Unauthorized(_dirSearchService.Failed(MessageKey.UserNotFoundInLocalDB.ToString()));
return Unauthorized(Result.Fail().Message(_localizer[Key.UserNotFoundInLocalDB]));
_dirSearchService.SetSearchRootCache(userResult.Data.Username, searchRootCreateDto.DirEntryPassword);
return Ok();

View File

@@ -19,7 +19,7 @@ namespace DigitalData.UserManager.API.Controllers
[HttpDelete]
public async Task<IActionResult> Delete([FromQuery] int moduleId, [FromQuery]int userId)
{
IServiceMessage result = await _service.DeleteAsyncByModuleUserId(moduleId, userId);
var result = await _service.DeleteAsyncByModuleUserId(moduleId, userId);
if (result.IsSuccess)
{
return Ok(result);