diff --git a/src/dev/peerat/backend/Main.java b/src/dev/peerat/backend/Main.java index 37f4d46..5ba7449 100644 --- a/src/dev/peerat/backend/Main.java +++ b/src/dev/peerat/backend/Main.java @@ -2,11 +2,14 @@ package dev.peerat.backend; import static dev.peerat.framework.RequestType.OPTIONS; +import java.util.HashMap; +import java.util.Map; import java.util.regex.Matcher; import dev.peerat.backend.model.Completion; import dev.peerat.backend.model.Group; import dev.peerat.backend.model.PeerAtUser; +import dev.peerat.backend.model.Player; import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.backend.routes.BadgeDetails; import dev.peerat.backend.routes.ChapterElement; @@ -14,6 +17,7 @@ import dev.peerat.backend.routes.ChapterList; import dev.peerat.backend.routes.DynamicLeaderboard; import dev.peerat.backend.routes.Leaderboard; import dev.peerat.backend.routes.Login; +import dev.peerat.backend.routes.MailConfirmation; import dev.peerat.backend.routes.PlayerDetails; import dev.peerat.backend.routes.PuzzleElement; import dev.peerat.backend.routes.PuzzleResponse; @@ -80,10 +84,12 @@ public class Main{ } private static void initRoutes(Router router, DatabaseRepository repo, Configuration config){ + final Map playersWaiting = new HashMap<>(); router.register(new ChapterElement(repo)); router.register(new ChapterList(repo)); router.register(new PuzzleElement(repo)); - router.register(new Register(repo, router, config.getUsersFiles())); + router.register(new Register(repo, router, config.getUsersFiles(), playersWaiting)); + router.register(new MailConfirmation(repo, router, config.getUsersFiles(), playersWaiting)); router.register(new Login(repo, router)); router.register(new Result(repo)); router.register(new Leaderboard(repo)); diff --git a/src/dev/peerat/backend/routes/Register.java b/src/dev/peerat/backend/routes/Register.java index f8968e6..955b393 100644 --- a/src/dev/peerat/backend/routes/Register.java +++ b/src/dev/peerat/backend/routes/Register.java @@ -5,12 +5,16 @@ import static dev.peerat.framework.RequestType.POST; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; import java.util.regex.Matcher; import org.json.simple.JSONObject; import dev.peerat.backend.bonus.extract.RouteDoc; import dev.peerat.backend.model.PeerAtUser; +import dev.peerat.backend.model.Player; import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.framework.Context; import dev.peerat.framework.HttpReader; @@ -24,20 +28,22 @@ public class Register implements Response { private DatabaseRepository databaseRepo; private Router router; private String usersFilesPath; + private Map playersWaiting; - public Register(DatabaseRepository databaseRepo, Router router, String initUsersFilesPath) { + public Register(DatabaseRepository databaseRepo, Router router, String initUsersFilesPath, + Map playersWaiting) { this.databaseRepo = databaseRepo; this.router = router; usersFilesPath = initUsersFilesPath; } - + @RouteDoc(path = "/register", responseCode = 200, responseDescription = "L'utilisateur est inscrit") @RouteDoc(responseCode = 403, responseDescription = "L'utilisateur est connecté") @RouteDoc(responseCode = 400, responseDescription = "Aucune données fournie / données invalide") @Route(path = "^\\/register$", type = POST) - public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{ - if (context.getUser() != null){ + public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception { + if (context.getUser() != null) { context.response(403); return; } @@ -63,30 +69,26 @@ public class Register implements Response { boolean pseudoAvailable = databaseRepo.checkPseudoAvailability(pseudo); boolean emailAvailable = databaseRepo.checkEmailAvailability(email); if (pseudoAvailable && emailAvailable) { - int id; - if ((id = databaseRepo.register(pseudo, email, password, firstname, lastname, description, group, - avatar)) >= 0) { - context.response(200, - "Access-Control-Expose-Headers: Authorization", - "Authorization: Bearer " + this.router.createAuthUser(new PeerAtUser(id))); - createFolderToSaveSourceCode(pseudo); - return; - } + Player player = new Player(pseudo, email, firstname, lastname, description); + playersWaiting.put(codeGenerator(), player); + context.response(200); } else { context.response(400); JSONObject error = new JSONObject(); error.put("username_valid", pseudoAvailable); error.put("email_valid", emailAvailable); writer.write(error.toJSONString()); - return; + } + return; } context.response(400); } - private void createFolderToSaveSourceCode(String pseudo) throws IOException { + private int codeGenerator() { + Random rand = new Random(); + return rand.nextInt(1000); - Files.createDirectories(Paths.get(String.format("%s/%s", usersFilesPath, pseudo))); } }