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/model/Completion.java b/src/dev/peerat/backend/model/Completion.java index 4e6e5f7..7b75955 100644 --- a/src/dev/peerat/backend/model/Completion.java +++ b/src/dev/peerat/backend/model/Completion.java @@ -62,15 +62,13 @@ public class Completion{ return tries; } - public void addTry(Puzzle currentPuzzle, byte[] response) { + public void addTry(Puzzle currentPuzzle, byte[] response){ if (score <= 0){ tries++; - System.out.println("Puzzle anwer:"); - System.out.println(Arrays.toString(currentPuzzle.getSoluce())); - System.out.println(new String(currentPuzzle.getSoluce())); - if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)) { + if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)){ if (tries > 1) { // Loose 5% each try with a minimum of 1 for score - score = (int) Math.ceil(currentPuzzle.getScoreMax() * (1 - ((tries - 1) / 20.))); +// score = (int) Math.ceil(currentPuzzle.getScoreMax() * (1 - ((tries - 1) / 20.))); + score = currentPuzzle.getScoreMax(); if (score < 1) score = 1; } else diff --git a/src/dev/peerat/backend/routes/admins/DynamicLogs.java b/src/dev/peerat/backend/routes/admins/DynamicLogs.java index 6cfba1a..3719c23 100644 --- a/src/dev/peerat/backend/routes/admins/DynamicLogs.java +++ b/src/dev/peerat/backend/routes/admins/DynamicLogs.java @@ -3,6 +3,7 @@ package dev.peerat.backend.routes.admins; import java.util.regex.Matcher; import dev.peerat.backend.bonus.extract.RouteDoc; +import dev.peerat.backend.model.Group; import dev.peerat.backend.model.PeerAtUser; import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.framework.Context; @@ -27,9 +28,13 @@ public class DynamicLogs implements Response{ @RouteDoc(path = "/admin/logs", responseCode = 200, responseDescription = "L'utilisateur peux voir les logs en directe") @RouteDoc(responseCode = 401, responseDescription = "L'utilisateur n'a pas accès à cette ressource") - @Route(path = "^/admin/logs$", websocket = true) + @Route(path = "^/admin/logs$", needLogin = true, websocket = true) public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception { - //check if admin + Group group = this.repo.getPlayerGroup(context.getUser().getId(), 1); + if(!group.getName().equalsIgnoreCase("Quarter-Master - Battles PAC x CEI")){ + context.response(423); + return; + } Key key = new Key(); 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 {