using Microsoft.AspNetCore.Identity; using SameBeat.Application.Interfejsy; using SameBeat.Domain.Encje; namespace SameBeat.Infrastructure.Autoryzacja; /// /// Implementacja oparta na Microsoft.AspNetCore.Identity.PasswordHasher -- sprawdzony, standardowy /// algorytm (PBKDF2), bez wciagania calego ASP.NET Identity. /// public class UslugaHaszowaniaHasel : IUslugaHaszowaniaHasel { private readonly PasswordHasher _hasher = new(); public string Haszuj(Uzytkownik uzytkownik, string hasloJawne) => _hasher.HashPassword(uzytkownik, hasloJawne); public WynikWeryfikacjiHasla Weryfikuj(Uzytkownik uzytkownik, string hasloHash, string hasloJawne) { var wynik = _hasher.VerifyHashedPassword(uzytkownik, hasloHash, hasloJawne); return wynik switch { PasswordVerificationResult.Failed => WynikWeryfikacjiHasla.Niepoprawne, PasswordVerificationResult.Success => WynikWeryfikacjiHasla.Poprawne, PasswordVerificationResult.SuccessRehashNeeded => WynikWeryfikacjiHasla.PoprawneWymagaRehaszowania, _ => WynikWeryfikacjiHasla.Niepoprawne }; } }