Class PasswordResetTokenService

java.lang.Object
com.easydesk.web.service.PasswordResetTokenService

@Service public class PasswordResetTokenService extends Object
'비밀번호 찾기' 재설정 토큰을 발급/검증/폐기하는 서비스. 의도적으로 in-memory(ConcurrentHashMap)로만 구현했다 - 재설정 토큰을 위해 새 Torque 테이블/스키마를 추가하면 easydesk-spring-security 를 다시 mvn install 해야 하는데, 최근 겪은 git worktree(main/claude 브랜치) + Maven SNAPSHOT 좌표 충돌 문제를 감안하면 지금 이 기능 때문에 또 라이브러리를 건드리는 건 위험 부담이 크다. 데모 앱 재시작 시 토큰이 전부 날아가고, 여러 인스턴스로 띄우면 인스턴스끼리 토큰을 공유하지 않는다는 제약이 있는데, 데모/단일 인스턴스 환경에서는 문제 없다. 나중에 필요해지면 이 클래스 인터페이스는 그대로 두고 구현체만 DB 기반으로 바꾸면 된다.
  • Constructor Details

    • PasswordResetTokenService

      public PasswordResetTokenService()
  • Method Details

    • issueToken

      public String issueToken(String username)
      주어진 사용자(username)에 대한 1회성 재설정 토큰을 새로 발급한다.
      Parameters:
      username - 재설정 대상 사용자의 로그인 아이디
      Returns:
      발급된 토큰 문자열 (UUID)
    • resolveUsername

      public Optional<String> resolveUsername(String token)
      토큰이 유효(존재 + 미만료)하면 연결된 username 을 반환하고, 아니면 빈 Optional 을 반환한다. 만료된 토큰은 조회 시점에 함께 정리(remove)한다.
      Parameters:
      token - 검증할 토큰
      Returns:
      유효하면 username, 아니면 Optional.empty()
    • invalidate

      public void invalidate(String token)
      사용한(또는 더 이상 유효하지 않게 만들) 토큰을 제거한다. 비밀번호 변경 성공 직후 같은 토큰으로 다시 변경을 시도하지 못하도록 반드시 호출한다.
      Parameters:
      token - 폐기할 토큰