From 187c3207040e5307a9cc49463c0632f0187c5ace Mon Sep 17 00:00:00 2001 From: Eveldee Date: Sat, 5 Jun 2021 10:47:11 +0200 Subject: [PATCH] Update IFingerprintManager --- .../Cli/Commands/FingerprintCommands.cs | 2 +- .../Services/FingerprintManager.cs | 42 ++++++++++++++++++- .../Services/IFingerprintManager.cs | 7 ++-- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/Akari.Prototype.Server/Cli/Commands/FingerprintCommands.cs b/Akari.Prototype.Server/Cli/Commands/FingerprintCommands.cs index 6ef6100..8470090 100644 --- a/Akari.Prototype.Server/Cli/Commands/FingerprintCommands.cs +++ b/Akari.Prototype.Server/Cli/Commands/FingerprintCommands.cs @@ -75,7 +75,7 @@ namespace Akari.Prototype.Server.Cli.Commands table.AddColumn(new TableColumn("[bold yellow]Name[/]").LeftAligned()); table.AddColumn(new TableColumn("[bold blue]Token[/]").LeftAligned()); - foreach (var (name, hash) in _fingerprintManager.FingerprintsHash) + foreach (var (name, hash) in _fingerprintManager) { table.AddRow($"[silver]{name}[/]", $"[grey]{hash}[/]"); } diff --git a/Akari.Prototype.Server/Services/FingerprintManager.cs b/Akari.Prototype.Server/Services/FingerprintManager.cs index 69777d8..5a291ff 100644 --- a/Akari.Prototype.Server/Services/FingerprintManager.cs +++ b/Akari.Prototype.Server/Services/FingerprintManager.cs @@ -4,6 +4,7 @@ using Isopoh.Cryptography.Argon2; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System; +using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; @@ -60,13 +61,50 @@ namespace Akari.Prototype.Server.Services File.WriteAllText(path, JsonSerializer.Serialize(_fingerprintsHash)); } + public bool Add(string name, string hash) + { + if (_fingerprintsHash.TryAdd(name, hash)) + { + SaveFingerprints(); + + return true; + } + + return false; + } + + public bool Contains(string name) + { + return _fingerprintsHash.ContainsKey(name); + } + public bool Remove(string name) { - var result = _fingerprintsHash.Remove(name); + if (_fingerprintsHash.Remove(name)) + { + SaveFingerprints(); + + return true; + } + + return false; + } + + public void Set(string name, string hash) + { + _fingerprintsHash[name] = hash; SaveFingerprints(); + } - return result; + public IEnumerator> GetEnumerator() + { + return _fingerprintsHash.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); } public void VerifyFingerprint(string name, string token) diff --git a/Akari.Prototype.Server/Services/IFingerprintManager.cs b/Akari.Prototype.Server/Services/IFingerprintManager.cs index bd30188..20e9d20 100644 --- a/Akari.Prototype.Server/Services/IFingerprintManager.cs +++ b/Akari.Prototype.Server/Services/IFingerprintManager.cs @@ -6,11 +6,12 @@ using System.Threading.Tasks; namespace Akari.Prototype.Server.Services { - public interface IFingerprintManager + public interface IFingerprintManager : IEnumerable> { - IEnumerable> FingerprintsHash { get; } - + bool Add(string name, string hash); + bool Contains(string name); bool Remove(string name); + void Set(string name, string hash); void VerifyFingerprint(string name, string token); }