Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
ad83a17835
7
pom.xml
7
pom.xml
|
@ -118,6 +118,13 @@
|
||||||
<version>${javax.mail.version}</version>
|
<version>${javax.mail.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-codec</groupId>
|
||||||
|
<artifactId>commons-codec</artifactId>
|
||||||
|
<version>1.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.loafle</groupId>
|
<groupId>com.loafle</groupId>
|
||||||
<artifactId>overflow_api_server</artifactId>
|
<artifactId>overflow_api_server</artifactId>
|
||||||
|
|
|
@ -3,8 +3,6 @@ package com.loafle.overflow.module.email.dao;
|
||||||
import com.loafle.overflow.module.email.model.EmailAuth;
|
import com.loafle.overflow.module.email.model.EmailAuth;
|
||||||
import com.loafle.overflow.module.member.model.Member;
|
import com.loafle.overflow.module.member.model.Member;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
|
||||||
import org.springframework.data.repository.query.Param;
|
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -14,8 +12,7 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Repository
|
@Repository
|
||||||
public interface EmailAuthDAO extends JpaRepository<EmailAuth, Long> {
|
public interface EmailAuthDAO extends JpaRepository<EmailAuth, Long> {
|
||||||
@Query("select e from EmailAuth e where e.emailAuthKey = :authKey")
|
EmailAuth findByEmailAuthKey(String emailAuthKey);
|
||||||
EmailAuth findByEmailAuthKey(@Param("authKey") String emailAuthKey);
|
|
||||||
|
|
||||||
List<EmailAuth> findByMember(Member member);
|
List<EmailAuth> findByMember(Member member);
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class EmailAuth {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Basic
|
@Basic
|
||||||
@Column(name = "AUTH_CONFIRM_DATE", nullable = true, insertable = true, updatable = false)
|
@Column(name = "AUTH_CONFIRM_DATE", nullable = true, insertable = true, updatable = true)
|
||||||
public Date getAuthConfirmDate() {
|
public Date getAuthConfirmDate() {
|
||||||
return authConfirmDate;
|
return authConfirmDate;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,10 @@ package com.loafle.overflow.module.email.service;
|
||||||
|
|
||||||
import com.loafle.overflow.module.email.dao.EmailAuthDAO;
|
import com.loafle.overflow.module.email.dao.EmailAuthDAO;
|
||||||
import com.loafle.overflow.module.email.model.EmailAuth;
|
import com.loafle.overflow.module.email.model.EmailAuth;
|
||||||
|
import com.loafle.overflow.module.member.dao.MemberDAO;
|
||||||
import com.loafle.overflow.module.member.model.Member;
|
import com.loafle.overflow.module.member.model.Member;
|
||||||
|
import com.loafle.overflow.module.meta.model.MetaMemberStatus;
|
||||||
|
import org.apache.commons.codec.binary.Base64;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.core.io.FileSystemResource;
|
||||||
import org.springframework.mail.MailException;
|
import org.springframework.mail.MailException;
|
||||||
|
@ -11,9 +14,16 @@ import org.springframework.mail.javamail.JavaMailSender;
|
||||||
import org.springframework.mail.javamail.MimeMessageHelper;
|
import org.springframework.mail.javamail.MimeMessageHelper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.crypto.Cipher;
|
||||||
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
import javax.mail.MessagingException;
|
import javax.mail.MessagingException;
|
||||||
import javax.mail.internet.MimeMessage;
|
import javax.mail.internet.MimeMessage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,17 +38,28 @@ public class EmailAuthService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmailAuthDAO emailAuthDAO;
|
private EmailAuthDAO emailAuthDAO;
|
||||||
|
|
||||||
public EmailAuth sendEmailByMember(long memberId, String memberEmail) {
|
@Autowired
|
||||||
try {
|
private MemberDAO memberDAO;
|
||||||
this.sendSimpleEmail(memberEmail, "Confirm Email", "Confirm Email");
|
|
||||||
}catch (MailException e) {
|
private String key = "loafle@RandomKey";
|
||||||
e.printStackTrace();
|
private String initVector = "loafleInitVector";
|
||||||
}
|
|
||||||
|
public EmailAuth sendEmailByMember(long memberId, String memberEmail) throws UnsupportedEncodingException {
|
||||||
|
|
||||||
EmailAuth auth = new EmailAuth();
|
EmailAuth auth = new EmailAuth();
|
||||||
auth.setMember(new Member(memberId));
|
auth.setMember(new Member(memberId));
|
||||||
// Todo AuthKey Generation
|
// Todo AuthKey Generation
|
||||||
auth.setEmailAuthKey("djdjdjdjeiejdikdjki");
|
String en = this.encrypt(memberEmail);
|
||||||
|
auth.setEmailAuthKey(en);
|
||||||
|
|
||||||
|
String encode = URLEncoder.encode(en, "UTF-8");
|
||||||
|
|
||||||
|
// System.out.println("encode = [" + encode + "]");
|
||||||
|
try {
|
||||||
|
this.sendSimpleEmail(memberEmail, "Confirm Email", "http://127.0.0.1:19080/account/check_email?key="+ encode +"\r\nConfirm Email");
|
||||||
|
}catch (MailException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
this.emailAuthDAO.save(auth);
|
this.emailAuthDAO.save(auth);
|
||||||
|
|
||||||
|
@ -49,10 +70,25 @@ public class EmailAuthService {
|
||||||
return this.emailAuthDAO.findOne(id);
|
return this.emailAuthDAO.findOne(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmailAuth readByAuthKey(String authKey) {
|
public EmailAuth readByAuthKey(String authKey) throws UnsupportedEncodingException {
|
||||||
return this.emailAuthDAO.findByEmailAuthKey(authKey);
|
System.out.println("authKey = [" + authKey + "]");
|
||||||
|
String deStr = URLDecoder.decode(authKey, "UTF-8");
|
||||||
|
System.out.println("deStr = [" + deStr + "]");
|
||||||
|
|
||||||
|
EmailAuth auth = this.emailAuthDAO.findByEmailAuthKey(deStr);
|
||||||
|
|
||||||
|
if (auth != null) {
|
||||||
|
auth.setAuthConfirmDate(new Date());
|
||||||
|
this.emailAuthDAO.save(auth);
|
||||||
|
auth.getMember().setStatus(new MetaMemberStatus((short)2));
|
||||||
|
this.memberDAO.save(auth.getMember());
|
||||||
|
}
|
||||||
|
return auth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dZQgXM1o/Cx48X8DM+6ec/oPfqA2l/LdWtijOZ2EnWk=
|
||||||
|
// dZQgXM1o/Cx48X8DM 6ec/oPfqA2l/LdWtijOZ2EnWk=
|
||||||
|
|
||||||
public List<EmailAuth> readByMember(long memberId) {
|
public List<EmailAuth> readByMember(long memberId) {
|
||||||
return this.emailAuthDAO.findByMember(new Member(memberId));
|
return this.emailAuthDAO.findByMember(new Member(memberId));
|
||||||
}
|
}
|
||||||
|
@ -86,4 +122,44 @@ public class EmailAuthService {
|
||||||
|
|
||||||
mailSender.send(message);
|
mailSender.send(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String encrypt(String value) {
|
||||||
|
try {
|
||||||
|
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
|
||||||
|
|
||||||
|
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
|
||||||
|
|
||||||
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
|
||||||
|
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
|
||||||
|
|
||||||
|
byte[] encrypted = cipher.doFinal(value.getBytes());
|
||||||
|
System.out.println("encrypted string: "
|
||||||
|
+ Base64.encodeBase64String(encrypted));
|
||||||
|
|
||||||
|
return Base64.encodeBase64String(encrypted);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String decrypt(String encrypted) {
|
||||||
|
try {
|
||||||
|
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
|
||||||
|
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
|
||||||
|
|
||||||
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
|
||||||
|
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
|
||||||
|
|
||||||
|
byte[] original = cipher.doFinal(Base64.decodeBase64(encrypted));
|
||||||
|
|
||||||
|
return new String(original);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by geek on 17. 6. 28.
|
* Created by geek on 17. 6. 28.
|
||||||
*/
|
*/
|
||||||
|
@ -43,7 +45,7 @@ public class MemberService {
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Member signup(Member member, String pw) {
|
public Member signup(Member member, String pw) throws UnsupportedEncodingException {
|
||||||
|
|
||||||
Member isMember = this.memberDAO.findByEmail(member.getEmail());
|
Member isMember = this.memberDAO.findByEmail(member.getEmail());
|
||||||
|
|
||||||
|
|
|
@ -25,4 +25,5 @@ public class EmailAuthServiceTest {
|
||||||
public void TestMailSend() throws Exception {
|
public void TestMailSend() throws Exception {
|
||||||
this.emailAuthService.sendEmailByMember((long)1, "geek@loafle.com");
|
this.emailAuthService.sendEmailByMember((long)1, "geek@loafle.com");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user