From c3794f1e6598e576bfee4d5c606e99569a2b5c74 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 9 May 2025 15:34:05 +0200 Subject: [PATCH] Enhance authentication features and dependencies Updated `DigitalData.Auth.API.csproj` to include new package references for improved security and functionality. Added a `Verify` method in the `Backdoor` class to securely check user credentials against plain text and hashed passwords. Introduced `BackdoorExtensions` with methods for easier retrieval of `Backdoor` instances by username. --- src/DigitalData.Auth.API/DigitalData.Auth.API.csproj | 1 + src/DigitalData.Auth.API/Models/Backdoor.cs | 11 +++++++++++ src/DigitalData.Auth.API/Models/BackdoorExtensions.cs | 8 ++++++++ 3 files changed, 20 insertions(+) create mode 100644 src/DigitalData.Auth.API/Models/BackdoorExtensions.cs diff --git a/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj b/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj index a89339b..208d265 100644 --- a/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj +++ b/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj @@ -10,6 +10,7 @@ + diff --git a/src/DigitalData.Auth.API/Models/Backdoor.cs b/src/DigitalData.Auth.API/Models/Backdoor.cs index 3c767a8..a88738a 100644 --- a/src/DigitalData.Auth.API/Models/Backdoor.cs +++ b/src/DigitalData.Auth.API/Models/Backdoor.cs @@ -7,4 +7,15 @@ public class Backdoor public string? Password { get; init; } public string? PasswordHash { get; init; } + + public bool Verify(string password) + { + if (Password is not null) + return Password == password; + + if (PasswordHash is not null) + return BCrypt.Net.BCrypt.Verify(password, PasswordHash); + + return false; + } } diff --git a/src/DigitalData.Auth.API/Models/BackdoorExtensions.cs b/src/DigitalData.Auth.API/Models/BackdoorExtensions.cs new file mode 100644 index 0000000..12eeccd --- /dev/null +++ b/src/DigitalData.Auth.API/Models/BackdoorExtensions.cs @@ -0,0 +1,8 @@ +namespace DigitalData.Auth.API.Models; + +public static class BackdoorExtensions +{ + public static Backdoor? GetOrDefault(this IEnumerable backdoors, string username) => backdoors.Where(b => b.Username == username).FirstOrDefault(); + + public static Backdoor? TryGet(this IEnumerable backdoors, string username) => backdoors.Where(b => b.Username == username).FirstOrDefault(); +}