TOTP Model modify & Test Code

This commit is contained in:
geek 2018-03-13 15:50:10 +09:00
parent 2f453bc38d
commit ab8c44efca
4 changed files with 33 additions and 8 deletions

View File

@ -132,6 +132,7 @@ public class EmailAuthService {
return this.emailAuthDAO.save(emailAuth);
}
// Todo Send Email Refactoring
public EmailAuth sendEmailResetPassword(Member member) throws UnsupportedEncodingException, MailException {
EmailAuth auth = new EmailAuth();
auth.setMember(member);

View File

@ -16,7 +16,7 @@ public class MemberTotp {
private String secretCode;
private Date createDate;
private Date updateDate;
private String otpAuthURL;
private String otpAuth;
public MemberTotp() {
}
@ -76,11 +76,11 @@ public class MemberTotp {
}
@Transient
public String getOtpAuthURL() {
return otpAuthURL;
public String getOtpAuth() {
return otpAuth;
}
public void setOtpAuthURL(String otpAuthURL) {
this.otpAuthURL = otpAuthURL;
public void setOtpAuth(String otpAuthURL) {
this.otpAuth = otpAuthURL;
}
}

View File

@ -6,6 +6,7 @@ import com.loafle.overflow.module.member.model.MemberTotp;
import com.warrenstrange.googleauth.GoogleAuthenticator;
import com.warrenstrange.googleauth.GoogleAuthenticatorKey;
import com.warrenstrange.googleauth.GoogleAuthenticatorQRGenerator;
import org.apache.http.client.utils.URIBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -66,12 +67,35 @@ public class MemberTotpService {
String secret = key.getKey();
// List<Integer> scratchCodes = key.getScratchCodes();
String otpAuthURL = GoogleAuthenticatorQRGenerator.getOtpAuthURL("overFlow", member.getEmail(), key);
// String otpAuthURL = GoogleAuthenticatorQRGenerator.getOtpAuthURL("overFlow", member.getEmail(), key);
URIBuilder uri = (new URIBuilder()).setScheme("otpauth")
.setHost("totp")
.setPath("/" + formatLabel("overFlow", member.getEmail()))
.setParameter("secret", key.getKey());
totp.setMember(member);
totp.setSecretCode(secret);
totp.setOtpAuthURL(otpAuthURL);
totp.setOtpAuth(uri.toString());
return totp;
}
private String formatLabel(String issuer, String accountName) {
if(accountName != null && accountName.trim().length() != 0) {
StringBuilder sb = new StringBuilder();
if(issuer != null) {
if(issuer.contains(":")) {
throw new IllegalArgumentException("Issuer cannot contain the ':' character.");
}
sb.append(issuer);
sb.append(":");
}
sb.append(accountName);
return sb.toString();
} else {
throw new IllegalArgumentException("Account name must not be empty.");
}
}
}

View File

@ -60,7 +60,7 @@ public class MemberTotpServiceTest {
MemberTotp totp = this.totpService.createTotp(m);
System.out.println(totp.getSecretCode());
System.out.println(totp.getOtpAuthURL());
System.out.println(totp.getOtpAuth());
}
}