RefreshTokenServiceImpl.java

package com.deveagles.be15_deveagles_be.features.auth.command.application.service;

import java.time.Duration;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;

@Slf4j
@Service
@RequiredArgsConstructor
public class RefreshTokenServiceImpl implements RefreshTokenService {

  private final RedisTemplate<String, String> redisTemplate;

  @Value("${jwt.refresh-expiration}")
  private long jwtRefreshExpiration;

  @Override
  public void saveRefreshToken(String username, String refreshToken) {

    ValueOperations<String, String> values = redisTemplate.opsForValue();
    values.set("RT:" + username, refreshToken, Duration.ofMillis(jwtRefreshExpiration));
  }

  @Override
  public void deleteRefreshToken(String username) {
    redisTemplate.delete("RT:" + username);
  }
}