Skip to content

Commit

Permalink
refactor : 메일 관련 로직 리팩토링 (#40)
Browse files Browse the repository at this point in the history
  • Loading branch information
Qbeom0925 committed Sep 28, 2023
1 parent 3638608 commit 51129a6
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 13 deletions.
27 changes: 27 additions & 0 deletions src/main/java/everymeal/server/global/util/MailUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package everymeal.server.global.util;


import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeMessage.RecipientType;
import lombok.RequiredArgsConstructor;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;

@RequiredArgsConstructor
@Component
public class MailUtil {
private final JavaMailSender javaMailSender;

public void sendMail(String email, String title, String text) {
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
mimeMessage.setSubject(title);
mimeMessage.setText(text);
mimeMessage.setRecipients(RecipientType.TO, email);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
21 changes: 8 additions & 13 deletions src/main/java/everymeal/server/user/service/UserServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,18 @@
import everymeal.server.global.exception.ApplicationException;
import everymeal.server.global.exception.ExceptionList;
import everymeal.server.global.util.JwtUtil;
import everymeal.server.global.util.MailUtil;
import everymeal.server.global.util.authresolver.entity.AuthenticatedUser;
import everymeal.server.user.controller.dto.request.UserEmailAuthReq;
import everymeal.server.user.controller.dto.request.UserEmailAuthVerifyReq;
import everymeal.server.user.controller.dto.response.UserEmailAuthRes;
import everymeal.server.user.controller.dto.response.UserLoginRes;
import everymeal.server.user.entity.User;
import everymeal.server.user.repository.UserRepository;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeMessage.RecipientType;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Random;
import lombok.RequiredArgsConstructor;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -29,7 +26,7 @@ public class UserServiceImpl implements UserService {

private final UserRepository userRepository;
private final JwtUtil jwtUtil;
private final JavaMailSender javaMailSender;
private final MailUtil mailUtil;

@Override
@Transactional
Expand Down Expand Up @@ -65,16 +62,14 @@ public UserEmailAuthRes emailAuth(
try {
Random random = SecureRandom.getInstanceStrong();
int authCode = random.nextInt(900000) + 100000;
mailUtil.sendMail(request.getEmail(), "[에브리밀] 대학교 이메일 인증", "인증번호 : " + authCode);
String mailJwt =
jwtUtil.generateEmailToken(
authenticatedUser.getIdx(), request.getEmail(), Integer.toString(authCode));
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
mimeMessage.setSubject("[에브리밀] 대학교 이메일 인증");
mimeMessage.setText("인증번호 : " + authCode);
mimeMessage.setRecipients(RecipientType.TO, request.getEmail());
javaMailSender.send(mimeMessage);
jwtUtil.generateEmailToken(
authenticatedUser.getIdx(),
request.getEmail(),
Integer.toString(authCode));
return UserEmailAuthRes.builder().emailAuthToken(mailJwt).build();
} catch (MessagingException | NoSuchAlgorithmException e) {
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import everymeal.server.global.IntegrationTestSupport;
import everymeal.server.global.util.JwtUtil;
import everymeal.server.global.util.MailUtil;
import everymeal.server.global.util.authresolver.entity.AuthenticatedUser;
import everymeal.server.user.controller.dto.request.UserEmailAuthReq;
import everymeal.server.user.controller.dto.request.UserEmailAuthVerifyReq;
Expand All @@ -22,6 +23,7 @@ class UserServiceImplTest extends IntegrationTestSupport {
@Autowired private UserService userService;
@Autowired private UserRepository userRepository;
@Autowired private JwtUtil jwtUtil;
@Autowired private MailUtil mailUtil;

@AfterEach
void tearDown() {
Expand Down

0 comments on commit 51129a6

Please sign in to comment.