Rajout route mail confirmation
This commit is contained in:
parent
6b652c8adf
commit
c80d9ce31d
2 changed files with 25 additions and 17 deletions
|
@ -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));
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -36,8 +42,8 @@ public class Register implements Response {
|
||||||
@RouteDoc(responseCode = 400, responseDescription = "Aucune données fournie / données invalide")
|
@RouteDoc(responseCode = 400, responseDescription = "Aucune données fournie / données invalide")
|
||||||
|
|
||||||
@Route(path = "^\\/register$", type = POST)
|
@Route(path = "^\\/register$", type = POST)
|
||||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception {
|
||||||
if (context.getUser() != null){
|
if (context.getUser() != null) {
|
||||||
context.response(403);
|
context.response(403);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -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)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue