From 8a138b52d6c6d4f8a38728f70bbb4cc656c6e8d8 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 Date: Tue, 19 Sep 2023 19:13:56 +0200 Subject: [PATCH] Re-add email & pseudo verification --- src/dev/peerat/backend/Main.java | 2 +- .../routes/users/MailConfirmation.java | 54 ++++++++++++++----- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/dev/peerat/backend/Main.java b/src/dev/peerat/backend/Main.java index ebb8d8e..2c12dbb 100644 --- a/src/dev/peerat/backend/Main.java +++ b/src/dev/peerat/backend/Main.java @@ -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)). diff --git a/src/dev/peerat/backend/routes/users/MailConfirmation.java b/src/dev/peerat/backend/routes/users/MailConfirmation.java index a34519a..f83adea 100644 --- a/src/dev/peerat/backend/routes/users/MailConfirmation.java +++ b/src/dev/peerat/backend/routes/users/MailConfirmation.java @@ -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 playersWaiting; + private Mail mail; public MailConfirmation( DatabaseRepository databaseRepo, Router router, String initUsersFilesPath, String gitToken, - Map playersWaiting){ + Map 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,26 +96,47 @@ public class MailConfirmation extends FormResponse { context.response(400); return; } - if(code == checkCode.intValue()){ - playersWaiting.remove(email); - int id = databaseRepo.register(pseudo, email, password, firstname, lastname, "", "", ""); - if(id >= 0){ -// createFolderToSaveSourceCode(pseudo); -// generateGitKey(email, pseudo, password); - context.response(200, - "Access-Control-Expose-Headers: Authorization", - "Authorization: Bearer " + this.router.createAuthUser(new PeerAtUser(id))); + + 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, "", "", ""); + if(id >= 0){ +// createFolderToSaveSourceCode(pseudo); +// generateGitKey(email, pseudo, password); + context.response(200, + "Access-Control-Expose-Headers: Authorization", + "Authorization: Bearer " + this.router.createAuthUser(new PeerAtUser(id))); + }else{ + context.response(400); + JsonMap error = new JsonMap(); + 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); - JsonMap error = new JsonMap(); - error.set("username_valid", pseudo); - error.set("email_valid", email); - writer.write(error.toString()); } }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 {