Re-add email & pseudo verification

This commit is contained in:
jeffcheasey88 2023-09-19 19:13:56 +02:00
parent 3c423c7122
commit 8a138b52d6
2 changed files with 41 additions and 15 deletions

View file

@ -116,7 +116,7 @@ public class Main{
router.
register(new Register(repo, playersWaiting, mail)).
register(new MailConfirmation(repo, router, config.getUsersFiles(), config.getGitToken(), playersWaiting)).
register(new MailConfirmation(repo, router, config.getUsersFiles(), config.getGitToken(), playersWaiting, mail)).
register(new Login(repo, router)).
register(new ProfileSettings(repo)).
register(new ChangePassword(repo)).

View file

@ -16,6 +16,7 @@ import java.security.interfaces.RSAPublicKey;
import java.util.Base64;
import java.util.Base64.Encoder;
import java.util.Map;
import java.util.Random;
import java.util.regex.Matcher;
import javax.net.ssl.HttpsURLConnection;
@ -27,6 +28,7 @@ import dev.peerat.backend.bonus.extract.RouteDoc;
import dev.peerat.backend.model.PeerAtUser;
import dev.peerat.backend.repository.DatabaseRepository;
import dev.peerat.backend.utils.FormResponse;
import dev.peerat.backend.utils.Mail;
import dev.peerat.framework.Context;
import dev.peerat.framework.HttpReader;
import dev.peerat.framework.HttpWriter;
@ -43,18 +45,21 @@ public class MailConfirmation extends FormResponse {
private Encoder encoder;
private String gitToken;
private Map<String, Integer> playersWaiting;
private Mail mail;
public MailConfirmation(
DatabaseRepository databaseRepo,
Router<PeerAtUser> router,
String initUsersFilesPath,
String gitToken,
Map<String, Integer> playersWaiting){
Map<String, Integer> playersWaiting,
Mail mail){
this.databaseRepo = databaseRepo;
this.router = router;
this.usersFilesPath = initUsersFilesPath;
this.gitToken = gitToken;
this.playersWaiting = playersWaiting;
this.mail = mail;
try {
generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(4096);
@ -91,6 +96,10 @@ public class MailConfirmation extends FormResponse {
context.response(400);
return;
}
boolean pseudoAvailable = databaseRepo.checkPseudoAvailability(pseudo);
boolean emailAvailable = databaseRepo.checkEmailAvailability(email);
if(pseudoAvailable && emailAvailable){
if(code == checkCode.intValue()){
playersWaiting.remove(email);
int id = databaseRepo.register(pseudo, email, password, firstname, lastname, "", "", "");
@ -106,10 +115,27 @@ public class MailConfirmation extends FormResponse {
error.set("username_valid", pseudo);
error.set("email_valid", email);
writer.write(error.toString());
int ncode = codeGenerator();
playersWaiting.put(email, ncode);
mail.send(email, "Welcome @ Peer @ Code", "Your check code is "+ncode+" !");
}
}else{
context.response(400);
}
}else{
context.response(400);
JsonMap error = new JsonMap();
error.set("username_valid", pseudo);
error.set("email_valid", email);
writer.write(error.toString());
}
}
private int codeGenerator(){
int min = 1000;
int max = 9999;
return new Random().nextInt((max-min)) + min;
}
private void createFolderToSaveSourceCode(String pseudo) throws IOException {