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(); +}