Skip to content

Commit 489528b

Browse files
committed
CLAP-294 Feat: 비밀번호 재설정 일회용 비밀번호 redis 엔티티 추가
<footer> - 관련: #346
1 parent d4608d9 commit 489528b

File tree

7 files changed

+92
-0
lines changed

7 files changed

+92
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
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+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
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+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package clap.server.domain.model.auth;
2+
3+
public record Otp(
4+
String email,
5+
String code
6+
) {
7+
}

0 commit comments

Comments
 (0)