diff --git a/src/main/java/com/bungaebowling/server/user/dto/UserRequest.java b/src/main/java/com/bungaebowling/server/user/dto/UserRequest.java index 5b8ef338..6d904bf1 100644 --- a/src/main/java/com/bungaebowling/server/user/dto/UserRequest.java +++ b/src/main/java/com/bungaebowling/server/user/dto/UserRequest.java @@ -34,6 +34,7 @@ public User createUser(District district, String encodedPassword) { return User.builder() .name(name) .email(email) + .role(Role.ROLE_PENDING) .password(encodedPassword) .district(district) .build(); diff --git a/src/main/java/com/bungaebowling/server/user/service/UserEmailCreator.java b/src/main/java/com/bungaebowling/server/user/service/UserEmailCreator.java new file mode 100644 index 00000000..dd6cd048 --- /dev/null +++ b/src/main/java/com/bungaebowling/server/user/service/UserEmailCreator.java @@ -0,0 +1,105 @@ +package com.bungaebowling.server.user.service; + +import org.springframework.stereotype.Service; + +@Service +public class UserEmailCreator { + + public String createEmailVerificationMail(String link) { + return createEmail("메일 인증", verificationContent(link)); + } + + public String createEmailVerificationMailForPasswordReset(String link) { + return createEmail("비밀번호 초기화", verificationForPasswordResetContent(link)); + } + + public String createEmailTempPassword(String tempPassword, String link) { + return createEmail("임시 비밀번호", tempPasswordContent(tempPassword, link)); + } + + private String createEmail(String title, String content) { + return """ +
+
+ title +
+

+ %s 안내입니다. +

+ %s +
+ """.formatted(title, content); + } + + private String verificationContent(String link) { + return """ +

+ 안녕하세요.
+ 번개볼링에 가입해 주셔서 진심으로 감사드립니다.
+ 아래 '메일 인증' 버튼을 클릭하여 회원가입을 완료해 주세요.
+ 감사합니다. +

+
+ +

+ 메일 인증 +

+
+
+ +
+

+ 만약 버튼이 정상적으로 클릭되지 않는다면, 아래 링크를 복사하여 접속해 주세요.
+ %s +

+
+ """.formatted(link, link); + } + + private String verificationForPasswordResetContent(String link) { + return """ +

+ 비밀번호 초기화를 위해 메일 인증이 필요합니다.
+ 아래 '메일 인증' 버튼을 클릭하여 비밀번호 초기화를 이어서 진행해주세요.
+

+
+ +

+ 메일 인증 +

+
+
+ +
+

+ 만약 버튼이 정상적으로 클릭되지 않는다면, 아래 링크를 복사하여 접속해 주세요.
+ %s +

+
+ """.formatted(link, link); + } + + private String tempPasswordContent(String tempPassword, String link) { + return """ +

+ 회원님의 임시 비밀번호입니다.
+ 로그인 후 비밀번호를 변경해주세요.
+ %s +

+
+ +

+ 바로 가기 +

+
+
+ +
+

+ 만약 버튼이 정상적으로 클릭되지 않는다면, 아래 링크를 복사하여 접속해 주세요.
+ %s +

+
+ """.formatted(tempPassword, link, link); + } +} diff --git a/src/main/java/com/bungaebowling/server/user/service/UserService.java b/src/main/java/com/bungaebowling/server/user/service/UserService.java index db3e64bb..77795e43 100644 --- a/src/main/java/com/bungaebowling/server/user/service/UserService.java +++ b/src/main/java/com/bungaebowling/server/user/service/UserService.java @@ -59,6 +59,7 @@ public class UserService { private final UserRateRepository userRateRepository; private final ScoreRepository scoreRepository; private final ApplicantRepository applicantRepository; + private final UserEmailCreator userEmailCreator; private final RedisTemplate redisTemplate; @@ -162,7 +163,8 @@ public void sendVerificationMail(Long userId) { var token = JwtProvider.createEmailVerification(user); String subject = "[번개볼링] 이메일 인증을 완료해주세요."; - String text = "링크를 클릭하여 인증을 완료해주세요!"; + + String text = userEmailCreator.createEmailVerificationMail(domain + "/email-verification?token=" + token); if (Arrays.asList(environment.getActiveProfiles()).contains("deploy")) { sendMailToMailServer(user, subject, text); @@ -314,8 +316,8 @@ public void sendVerificationMailForPasswordReset(UserRequest.SendVerificationMai String token = JwtProvider.createEmailVerificationForPassword(user); - String subject = "[번개볼링] 비밀번호 초기화 및 임시 비밀번호 발급을 위한 이메일 인증을 완료해주세요."; - String text = "링크를 클릭하여 인증을 완료해주세요!"; + String subject = "[번개볼링] 비밀번호 초기화를 위해 이메일 인증을 완료해주세요."; + String text = userEmailCreator.createEmailVerificationMailForPasswordReset(domain + "/password/email-verification?token=" + token); if (Arrays.asList(environment.getActiveProfiles()).contains("deploy")) { sendMailToMailServer(user, subject, text); @@ -332,7 +334,7 @@ public void confirmEmailAndSendTempPassword(UserRequest.ConfirmEmailAndSendTempP user.updatePassword(passwordEncoder.encode(tempPassword)); String subject = "[번개볼링] 임시 비밀번호"; - String text = "임시 비밀번호는 " + tempPassword + " 입니다.
*비밀번호를 변경해주세요." + "
*기존의 비밀번호는 사용할 수 없습니다."; + String text = userEmailCreator.createEmailTempPassword(tempPassword, domain); if (Arrays.asList(environment.getActiveProfiles()).contains("deploy")) { sendMailToMailServer(user, subject, text);