Skip to content

Commit

Permalink
Merge pull request #114 from thisis-joe/fix/111-EmailAuthSystem
Browse files Browse the repository at this point in the history
fix/111-EmailAuthSystem
  • Loading branch information
JeongHunMoon authored Jan 17, 2024
2 parents 09de2bc + fa990c3 commit f65b259
Show file tree
Hide file tree
Showing 9 changed files with 148 additions and 154 deletions.
Binary file modified .DS_Store
Binary file not shown.
14 changes: 12 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,18 @@ dependencies {
implementation 'io.jsonwebtoken:jjwt-impl:0.11.2'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.2'

// //이메일 인증 의존성 추가
// implementation 'org.springframework.boot:spring-boot-starter-mail'
//이메일 인증 의존성 추가
//implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.6.3'
implementation 'org.springframework.boot:spring-boot-starter-mail'
//implementation 'javax.mail:mail:1.4.7'
// // Spring Context Support
// implementation 'org.springframework:spring-context-support:5.3.9'
//
implementation 'javax.validation:validation-api:2.0.1.Final'
// implementation 'org.hibernate.validator:hibernate-validator:7.0.1.Final'
// implementation 'jakarta.mail:1.6.7'
implementation group: 'com.sun.mail', name: 'jakarta.mail', version: '1.6.7'


}

Expand Down
15 changes: 15 additions & 0 deletions src/main/java/GHOST/sk_ghost/common/CertificationNumber.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package GHOST.sk_ghost.common;

//인증번호 생성
public class CertificationNumber {

public static String getCertificationNumber(){
String certificationNumber="";

for (int count=0;count<4;count++) certificationNumber += (int)(Math.random()*10);

return certificationNumber;
}


}
63 changes: 20 additions & 43 deletions src/main/java/GHOST/sk_ghost/config/EmailConfig.java
Original file line number Diff line number Diff line change
@@ -1,56 +1,33 @@
//package GHOST.sk_ghost.config;
//
//import java.util.Properties;
//
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.PropertySource;
//import org.springframework.mail.javamail.JavaMailSender;
//import org.springframework.mail.javamail.JavaMailSenderImpl;
//
//
//import java.util.Properties;
//@Configuration
//@PropertySource("classpath:email.properties")
//public class EmailConfig {
// @Bean
// public JavaMailSender mailSender() {//JAVA MAILSENDER 인터페이스를 구현한 객체를 빈으로 등록하기 위함.
//
// @Value("${mail.smtp.port}")
// private int port;
// @Value("${mail.smtp.socketFactory.port}")
// private int socketPort;
// @Value("${mail.smtp.auth}")
// private boolean auth;
// @Value("${mail.smtp.starttls.enable}")
// private boolean starttls;
// @Value("${mail.smtp.starttls.required}")
// private boolean startlls_required;
// @Value("${mail.smtp.socketFactory.fallback}")
// private boolean fallback;
// @Value("${AdminMail.id}")
// private String id;
// @Value("${AdminMail.password}")
// private String password;
// JavaMailSenderImpl mailSender = new JavaMailSenderImpl();//JavaMailSender 의 구현체를 생성하고
// mailSender.setHost("smtp.gmail.com");// 속성을 넣기 시작합니다. 이메일 전송에 사용할 SMTP 서버 호스트를 설정
// mailSender.setPort(587);// 587로 포트를 지정
// mailSender.setUsername("[email protected]");//구글계정을 넣습니다.
// mailSender.setPassword("ojlmaepmjaqbpmsw");//구글 앱 비밀번호를 넣습니다.
//
// @Bean
// public JavaMailSender javaMailService() {
// JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
// javaMailSender.setHost("smtp.gmail.com");
// javaMailSender.setUsername(id);
// javaMailSender.setPassword(password);
// javaMailSender.setPort(port);
// javaMailSender.setJavaMailProperties(getMailProperties());
// javaMailSender.setDefaultEncoding("UTF-8");
// return javaMailSender;
// }
// private Properties getMailProperties()
// {
// Properties pt = new Properties();
// pt.put("mail.smtp.socketFactory.port", socketPort);
// pt.put("mail.smtp.auth", auth);
// pt.put("mail.smtp.starttls.enable", starttls);
// pt.put("mail.smtp.starttls.required", startlls_required);
// pt.put("mail.smtp.socketFactory.fallback",fallback);
// pt.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// return pt;
// Properties javaMailProperties = new Properties();//JavaMail의 속성을 설정하기 위해 Properties 객체를 생성
// javaMailProperties.put("mail.transport.protocol", "smtp");//프로토콜로 smtp 사용
// javaMailProperties.put("mail.smtp.auth", "true");//smtp 서버에 인증이 필요
// javaMailProperties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");//SSL 소켓 팩토리 클래스 사용
// javaMailProperties.put("mail.smtp.starttls.enable", "true");//STARTTLS(TLS를 시작하는 명령)를 사용하여 암호화된 통신을 활성화
// javaMailProperties.put("mail.debug", "true");//디버깅 정보 출력
// javaMailProperties.put("mail.smtp.ssl.trust", "smtp.naver.com");//smtp 서버의 ssl 인증서를 신뢰
// javaMailProperties.put("mail.smtp.ssl.protocols", "TLSv1.2");//사용할 ssl 프로토콜 버젼
//
// mailSender.setJavaMailProperties(javaMailProperties);//mailSender에 우리가 만든 properties 넣고
//
// return mailSender;//빈으로 등록한다.
// }
//}
27 changes: 14 additions & 13 deletions src/main/java/GHOST/sk_ghost/controller/Email.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
//package GHOST.sk_ghost.controller;
//
//import GHOST.sk_ghost.dto.EmailRequestDto;
//import GHOST.sk_ghost.service.EmailService;
//import GHOST.sk_ghost.service.V1service;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import lombok.RequiredArgsConstructor;
////import org.hibernate.annotations.Check;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RestController;
//
//@Controller
//public class Email {
// @Autowired
// private EmailService emailService; // Service 호출을 위한 객체
// @PostMapping("/emailConfirm")
// public String emailConfirm(@RequestParam String email) throws Exception {
//import javax.validation.Valid;
//
// String confirm = emailService.sendSimpleMessage(email);
//@RestController
//@RequiredArgsConstructor
//public class Email {
// private final EmailService mailService;
//
// return confirm;
// @PostMapping("/mailSend")
// public String mailSend(@RequestBody @Valid EmailRequestDto emailDto) {
// System.out.println("이메일 인증 이메일 :" + emailDto.getEmail());
// return mailService.joinEmail(emailDto.getEmail());
// }
//}
15 changes: 15 additions & 0 deletions src/main/java/GHOST/sk_ghost/dto/EmailRequestDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package GHOST.sk_ghost.dto;

import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
@Getter
@Setter
public class EmailRequestDto {
@Email//1)@기호를 포함해야 한다.2_@기호를 기준으로 이메일 주소를 이루는 로컬호스트와 도메인 파트가 존재해야 한다.3)도메인 파트는 최소하나의 점과
//그 뒤에 최소한 2개의 알파벳을 가진다를 검증
@NotEmpty(message = "이메일을 입력해 주세요")
private String email;
}
63 changes: 61 additions & 2 deletions src/main/java/GHOST/sk_ghost/service/EmailService.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,66 @@
//package GHOST.sk_ghost.service;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.mail.javamail.JavaMailSender;
//import org.springframework.mail.javamail.MimeMessageHelper;
//import org.springframework.stereotype.Service;
//
//import javax.mail.MessagingException;
////import javax.mail.internet.MimeMessage;
//import java.util.Random;
//import jakarta.mail.internet.MimeMessage;
//
//
//public interface EmailService {
// String sendSimpleMessage(String to)throws Exception;
//@Service
//public class EmailService {
// @Autowired
// private JavaMailSender mailSender;
// private int authNumber;
//
// //임의의 6자리 양수를 반환합니다.
// public void makeRandomNumber() {
// Random r = new Random();
// String randomNumber = "";
// for(int i = 0; i < 6; i++) {
// randomNumber += Integer.toString(r.nextInt(10));
// }
//
// authNumber = Integer.parseInt(randomNumber);
// }
//
//
// //mail을 어디서 보내는지, 어디로 보내는지 , 인증 번호를 html 형식으로 어떻게 보내는지 작성합니다.
// public String joinEmail(String email) {
// makeRandomNumber();
// String setFrom = "[email protected]"; // email-config에 설정한 자신의 이메일 주소를 입력
// String toMail = email;
// String title = "회원 가입 인증 이메일 입니다."; // 이메일 제목
// String content =
// "나의 APP을 방문해주셔서 감사합니다." + //html 형식으로 작성 !
// "<br><br>" +
// "인증 번호는 " + authNumber + "입니다." +
// "<br>" +
// "인증번호를 제대로 입력해주세요"; //이메일 내용 삽입
// mailSend(setFrom, toMail, title, content);
// return Integer.toString(authNumber);
// }
//
// //이메일을 전송합니다.
// public void mailSend(String setFrom, String toMail, String title, String content) {
// MimeMessage message = mailSender.createMimeMessage();//JavaMailSender 객체를 사용하여 MimeMessage 객체를 생성
// try {
// MimeMessageHelper helper = new MimeMessageHelper(message,true,"utf-8");//이메일 메시지와 관련된 설정을 수행합니다.
// // true를 전달하여 multipart 형식의 메시지를 지원하고, "utf-8"을 전달하여 문자 인코딩을 설정
// helper.setFrom(setFrom);//이메일의 발신자 주소 설정
// helper.setTo(toMail);//이메일의 수신자 주소 설정
// helper.setSubject(title);//이메일의 제목을 설정
// helper.setText(content,true);//이메일의 내용 설정 두 번째 매개 변수에 true를 설정하여 html 설정으로한다.
// mailSender.send(message);
// } catch (MessagingException e) {//이메일 서버에 연결할 수 없거나, 잘못된 이메일 주소를 사용하거나, 인증 오류가 발생하는 등 오류
// // 이러한 경우 MessagingException이 발생
// e.printStackTrace();//e.printStackTrace()는 예외를 기본 오류 스트림에 출력하는 메서드
// }
//
//
// }
//
//}
85 changes: 0 additions & 85 deletions src/main/java/GHOST/sk_ghost/service/EmailServiceImpl.java

This file was deleted.

20 changes: 11 additions & 9 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,14 @@ jasypt.encryptor.bean.prefix= ENC(
jasypt.encryptor.bean.suffix= )

## EmailAuth
#mail.smtp.auth=true
#mail.smtp.starttls.required=true
#mail.smtp.starttls.enable=true
#mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
#mail.smtp.socketFactory.fallback=false
#mail.smtp.port=465
#mail.smtp.socketFactory.port=465
#AdminMail.id = [email protected]
#AdminMail.password = ???? ? ????? ??
#spring.mail.smtp.host=smtp.google.com
#spring.mail.smtp.port=587
#[email protected]
#spring.mail.smtp.pasword=ojlmaepmjaqbpmsw
#
## EmailAuth - Options
#spring.mail.properties.mail.smtp.auth=true
#spring.mail.properties.mail.smtp.starttls.enable=true
##spring.mail.properties.mail.smtp.starttls.required=true
##spring.mail.properties.mail.debug=true
##spring.mail.properties.mail.smtp.connectiontimeout=5000

0 comments on commit f65b259

Please sign in to comment.