Rajout route mail confirmation

This commit is contained in:
s_lanfeust 2023-09-04 14:46:09 +02:00
parent 6b652c8adf
commit c80d9ce31d
2 changed files with 25 additions and 17 deletions

View file

@ -2,11 +2,14 @@ package dev.peerat.backend;
import static dev.peerat.framework.RequestType.OPTIONS; import static dev.peerat.framework.RequestType.OPTIONS;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import dev.peerat.backend.model.Completion; import dev.peerat.backend.model.Completion;
import dev.peerat.backend.model.Group; import dev.peerat.backend.model.Group;
import dev.peerat.backend.model.PeerAtUser; import dev.peerat.backend.model.PeerAtUser;
import dev.peerat.backend.model.Player;
import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.backend.repository.DatabaseRepository;
import dev.peerat.backend.routes.BadgeDetails; import dev.peerat.backend.routes.BadgeDetails;
import dev.peerat.backend.routes.ChapterElement; 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.DynamicLeaderboard;
import dev.peerat.backend.routes.Leaderboard; import dev.peerat.backend.routes.Leaderboard;
import dev.peerat.backend.routes.Login; import dev.peerat.backend.routes.Login;
import dev.peerat.backend.routes.MailConfirmation;
import dev.peerat.backend.routes.PlayerDetails; import dev.peerat.backend.routes.PlayerDetails;
import dev.peerat.backend.routes.PuzzleElement; import dev.peerat.backend.routes.PuzzleElement;
import dev.peerat.backend.routes.PuzzleResponse; import dev.peerat.backend.routes.PuzzleResponse;
@ -80,10 +84,12 @@ public class Main{
} }
private static void initRoutes(Router<PeerAtUser> router, DatabaseRepository repo, Configuration config){ private static void initRoutes(Router<PeerAtUser> router, DatabaseRepository repo, Configuration config){
final Map<Integer, Player> playersWaiting = new HashMap<>();
router.register(new ChapterElement(repo)); router.register(new ChapterElement(repo));
router.register(new ChapterList(repo)); router.register(new ChapterList(repo));
router.register(new PuzzleElement(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 Login(repo, router));
router.register(new Result(repo)); router.register(new Result(repo));
router.register(new Leaderboard(repo)); router.register(new Leaderboard(repo));

View file

@ -5,12 +5,16 @@ import static dev.peerat.framework.RequestType.POST;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import dev.peerat.backend.bonus.extract.RouteDoc; import dev.peerat.backend.bonus.extract.RouteDoc;
import dev.peerat.backend.model.PeerAtUser; import dev.peerat.backend.model.PeerAtUser;
import dev.peerat.backend.model.Player;
import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.backend.repository.DatabaseRepository;
import dev.peerat.framework.Context; import dev.peerat.framework.Context;
import dev.peerat.framework.HttpReader; import dev.peerat.framework.HttpReader;
@ -24,8 +28,10 @@ public class Register implements Response {
private DatabaseRepository databaseRepo; private DatabaseRepository databaseRepo;
private Router<PeerAtUser> router; private Router<PeerAtUser> router;
private String usersFilesPath; private String usersFilesPath;
private Map<Integer, Player> playersWaiting;
public Register(DatabaseRepository databaseRepo, Router<PeerAtUser> router, String initUsersFilesPath) { public Register(DatabaseRepository databaseRepo, Router<PeerAtUser> router, String initUsersFilesPath,
Map<Integer, Player> playersWaiting) {
this.databaseRepo = databaseRepo; this.databaseRepo = databaseRepo;
this.router = router; this.router = router;
usersFilesPath = initUsersFilesPath; usersFilesPath = initUsersFilesPath;
@ -63,30 +69,26 @@ public class Register implements Response {
boolean pseudoAvailable = databaseRepo.checkPseudoAvailability(pseudo); boolean pseudoAvailable = databaseRepo.checkPseudoAvailability(pseudo);
boolean emailAvailable = databaseRepo.checkEmailAvailability(email); boolean emailAvailable = databaseRepo.checkEmailAvailability(email);
if (pseudoAvailable && emailAvailable) { if (pseudoAvailable && emailAvailable) {
int id; Player player = new Player(pseudo, email, firstname, lastname, description);
if ((id = databaseRepo.register(pseudo, email, password, firstname, lastname, description, group, playersWaiting.put(codeGenerator(), player);
avatar)) >= 0) { context.response(200);
context.response(200,
"Access-Control-Expose-Headers: Authorization",
"Authorization: Bearer " + this.router.createAuthUser(new PeerAtUser(id)));
createFolderToSaveSourceCode(pseudo);
return;
}
} else { } else {
context.response(400); context.response(400);
JSONObject error = new JSONObject(); JSONObject error = new JSONObject();
error.put("username_valid", pseudoAvailable); error.put("username_valid", pseudoAvailable);
error.put("email_valid", emailAvailable); error.put("email_valid", emailAvailable);
writer.write(error.toJSONString()); writer.write(error.toJSONString());
return;
} }
return;
} }
context.response(400); 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)));
} }
} }