File tree Expand file tree Collapse file tree 7 files changed +92
-0
lines changed
src/main/java/clap/server
adapter/outbound/infrastructure/redis/otp
application/port/outbound/auth/otp Expand file tree Collapse file tree 7 files changed +92
-0
lines changed Original file line number Diff line number Diff line change 1+ package clap .server .adapter .outbound .infrastructure .redis .otp ;
2+
3+ import clap .server .application .port .outbound .auth .otp .CommandOtpPort ;
4+ import clap .server .application .port .outbound .auth .otp .LoadOtpPort ;
5+ import clap .server .common .annotation .architecture .InfrastructureAdapter ;
6+ import clap .server .domain .model .auth .Otp ;
7+ import lombok .RequiredArgsConstructor ;
8+ import lombok .extern .slf4j .Slf4j ;
9+
10+ import java .util .Optional ;
11+
12+ @ Slf4j
13+ @ InfrastructureAdapter
14+ @ RequiredArgsConstructor
15+ public class OtpAdapter implements LoadOtpPort , CommandOtpPort {
16+ private final OtpRepository otpRepository ;
17+ private final OtpMapper otpMapper ;
18+
19+ @ Override
20+ public void save (Otp otp ) {
21+ OtpEntity refreshTokenEntity = otpMapper .toEntity (otp );
22+ otpRepository .save (refreshTokenEntity );
23+ }
24+
25+ @ Override
26+ public void deleteByEmail (String email ) {
27+ otpRepository .deleteById (email );
28+ }
29+
30+ @ Override
31+ public Optional <Otp > findByEmail (String email ) {
32+ return otpRepository .findById (email ).map (otpMapper ::toDomain );
33+ }
34+ }
Original file line number Diff line number Diff line change 1+ package clap .server .adapter .outbound .infrastructure .redis .otp ;
2+
3+ import lombok .*;
4+ import org .springframework .data .annotation .Id ;
5+ import org .springframework .data .redis .core .RedisHash ;
6+
7+ @ RedisHash (value = "OTP" , timeToLive = 300 ) // 300초(5분) 후 자동 삭제
8+ @ Getter
9+ @ Builder
10+ @ ToString (of = {"email" , "code" })
11+ public class OtpEntity {
12+ @ Id
13+ private String email ;
14+ private String code ;
15+ }
Original file line number Diff line number Diff line change 1+ package clap .server .adapter .outbound .infrastructure .redis .otp ;
2+
3+ import clap .server .domain .model .auth .Otp ;
4+ import org .mapstruct .InheritInverseConfiguration ;
5+ import org .mapstruct .Mapper ;
6+
7+ @ Mapper (componentModel = "spring" )
8+ public interface OtpMapper {
9+ @ InheritInverseConfiguration
10+ Otp toDomain (final OtpEntity entity );
11+
12+ OtpEntity toEntity (final Otp domain );
13+ }
Original file line number Diff line number Diff line change 1+ package clap .server .adapter .outbound .infrastructure .redis .otp ;
2+
3+ import org .springframework .data .repository .CrudRepository ;
4+
5+ public interface OtpRepository extends CrudRepository <OtpEntity , String >{
6+ }
Original file line number Diff line number Diff line change 1+ package clap .server .application .port .outbound .auth .otp ;
2+
3+ import clap .server .domain .model .auth .Otp ;
4+
5+ public interface CommandOtpPort {
6+ void save (Otp otp );
7+ void deleteByEmail (String email );
8+ }
Original file line number Diff line number Diff line change 1+ package clap .server .application .port .outbound .auth .otp ;
2+
3+ import clap .server .domain .model .auth .Otp ;
4+
5+ import java .util .Optional ;
6+
7+ public interface LoadOtpPort {
8+ Optional <Otp > findByEmail (String email );
9+ }
Original file line number Diff line number Diff line change 1+ package clap .server .domain .model .auth ;
2+
3+ public record Otp (
4+ String email ,
5+ String code
6+ ) {
7+ }
You can’t perform that action at this time.
0 commit comments