From 019abaffa6d2d61931ecdfec8d1376e824a1f7ec Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 9 May 2025 14:35:15 +0200 Subject: [PATCH] Refactor namespaces and introduce backdoor authentication This commit refactors the namespace from `DigitalData.Auth.API.Dto` to `DigitalData.Auth.API.Models` in several files, improving the organization of data structures. A new `Backdoor` class is added to support backdoor authentication, along with a method in `DependencyInjection.cs` to register backdoor configurations. Additionally, `AuthApiParams` configuration is included in `Program.cs`, and a new JSON structure for backdoor users is introduced in `backdoors.json`. These changes enhance the codebase's structure and functionality. --- .../Controllers/AuthController.cs | 2 +- src/DigitalData.Auth.API/Models/Backdoor.cs | 10 ++++++++++ .../{Dto => Models}/ConsumerLogin.cs | 2 +- .../Models/DependencyInjection.cs | 12 ++++++++++++ .../{Dto => Models}/UserLogin.cs | 2 +- src/DigitalData.Auth.API/Program.cs | 3 +++ src/DigitalData.Auth.API/backdoors.json | 9 +++++++++ 7 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/DigitalData.Auth.API/Models/Backdoor.cs rename src/DigitalData.Auth.API/{Dto => Models}/ConsumerLogin.cs (60%) create mode 100644 src/DigitalData.Auth.API/Models/DependencyInjection.cs rename src/DigitalData.Auth.API/{Dto => Models}/UserLogin.cs (50%) create mode 100644 src/DigitalData.Auth.API/backdoors.json diff --git a/src/DigitalData.Auth.API/Controllers/AuthController.cs b/src/DigitalData.Auth.API/Controllers/AuthController.cs index 8623c2f..cd8cc42 100644 --- a/src/DigitalData.Auth.API/Controllers/AuthController.cs +++ b/src/DigitalData.Auth.API/Controllers/AuthController.cs @@ -5,7 +5,7 @@ using Microsoft.Extensions.Options; using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.DTOs.User; using DigitalData.Core.Abstractions.Application; -using DigitalData.Auth.API.Dto; +using DigitalData.Auth.API.Models; using DigitalData.Auth.API.Services.Contracts; using DigitalData.Auth.API.Entities; using DigitalData.Core.DTO; diff --git a/src/DigitalData.Auth.API/Models/Backdoor.cs b/src/DigitalData.Auth.API/Models/Backdoor.cs new file mode 100644 index 0000000..3c767a8 --- /dev/null +++ b/src/DigitalData.Auth.API/Models/Backdoor.cs @@ -0,0 +1,10 @@ +namespace DigitalData.Auth.API.Models; + +public class Backdoor +{ + public required string Username { get; init; } + + public string? Password { get; init; } + + public string? PasswordHash { get; init; } +} diff --git a/src/DigitalData.Auth.API/Dto/ConsumerLogin.cs b/src/DigitalData.Auth.API/Models/ConsumerLogin.cs similarity index 60% rename from src/DigitalData.Auth.API/Dto/ConsumerLogin.cs rename to src/DigitalData.Auth.API/Models/ConsumerLogin.cs index 3f17772..e4a8974 100644 --- a/src/DigitalData.Auth.API/Dto/ConsumerLogin.cs +++ b/src/DigitalData.Auth.API/Models/ConsumerLogin.cs @@ -1,4 +1,4 @@ -namespace DigitalData.Auth.API.Dto +namespace DigitalData.Auth.API.Models { public record ConsumerLogin(string Name, string Password); } \ No newline at end of file diff --git a/src/DigitalData.Auth.API/Models/DependencyInjection.cs b/src/DigitalData.Auth.API/Models/DependencyInjection.cs new file mode 100644 index 0000000..ce67382 --- /dev/null +++ b/src/DigitalData.Auth.API/Models/DependencyInjection.cs @@ -0,0 +1,12 @@ +using Microsoft.Extensions.Options; + +namespace DigitalData.Auth.API.Models; + +public static class DependencyInjection +{ + public static IServiceCollection AddBackdoors(this IServiceCollection services, IConfiguration configuration) + { + var backdoors = configuration.Get>() ?? Enumerable.Empty(); + return services.AddSingleton(Options.Create(backdoors)); + } +} diff --git a/src/DigitalData.Auth.API/Dto/UserLogin.cs b/src/DigitalData.Auth.API/Models/UserLogin.cs similarity index 50% rename from src/DigitalData.Auth.API/Dto/UserLogin.cs rename to src/DigitalData.Auth.API/Models/UserLogin.cs index dbfc082..97df944 100644 --- a/src/DigitalData.Auth.API/Dto/UserLogin.cs +++ b/src/DigitalData.Auth.API/Models/UserLogin.cs @@ -1,3 +1,3 @@ -namespace DigitalData.Auth.API.Dto; +namespace DigitalData.Auth.API.Models; public record UserLogin(string Password, int? UserId = null, string? Username = null); \ No newline at end of file diff --git a/src/DigitalData.Auth.API/Program.cs b/src/DigitalData.Auth.API/Program.cs index b605146..5076875 100644 --- a/src/DigitalData.Auth.API/Program.cs +++ b/src/DigitalData.Auth.API/Program.cs @@ -24,11 +24,14 @@ try builder.Configuration.AddJsonFile("consumer-repository.json", true, true); + builder.Configuration.AddJsonFile("consumer-repository.json", true, true); + var config = builder.Configuration; var apiParams = config.Get() ?? throw new InvalidOperationException("AuthApiOptions is missing or invalid in appsettings."); // Add services to the container. + builder.Services.Configure<> builder.Services.Configure(config); builder.Services.AddAuthService(config); builder.Services.AddRSAPool(config.GetSection("CryptParams")); diff --git a/src/DigitalData.Auth.API/backdoors.json b/src/DigitalData.Auth.API/backdoors.json new file mode 100644 index 0000000..1741888 --- /dev/null +++ b/src/DigitalData.Auth.API/backdoors.json @@ -0,0 +1,9 @@ +{ + "backdoors": [ + { + "Username": "Foo", + "Password": null, + "PasswordHash": "" + } + ] +}