namespace Application.Abstractions.Authentication; // dpot 1.0 (legacy)에서 이관된 회원의 비밀번호 해시를 검증하기 위한 추상화. // 현행은 PBKDF2(Member.PasswordHash)를 사용하지만, legacy 데이터는 bcrypt($2a$/$2b$/$2y$) 형식이 // Member.Password 컬럼에 보존되어 있다. 로그인 시 PBKDF2 검증이 실패하면 이 검증기로 fallback 한 뒤, // 성공하면 PBKDF2로 재해싱(lazy upgrade)하여 점진적으로 bcrypt 의존을 제거한다. public interface ILegacyPasswordVerifier { // 주어진 해시가 legacy(bcrypt) 형식인지 판별 bool IsLegacyHash(string? hash); // 평문이 legacy bcrypt 해시와 일치하는지 검증 bool Verify(string password, string legacyHash); }