Secure route needing login and update some http errors codes

This commit is contained in:
Francois G 2023-04-09 17:10:49 +02:00
parent 109ab984b3
commit 87c4fd8bc1
8 changed files with 23 additions and 15 deletions

View file

@ -22,10 +22,9 @@ public class BadgeDetails implements Response {
this.databaseRepo = databaseRepo; this.databaseRepo = databaseRepo;
} }
@Route(path = "^\\/badge\\/([0-9]+)$") @Route(path = "^\\/badge\\/([0-9]+)$", needLogin = true)
@Override @Override
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception { public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
if (matcher.groupCount() > 0) { if (matcher.groupCount() > 0) {
int badgeId = Integer.parseInt(matcher.group(1)); int badgeId = Integer.parseInt(matcher.group(1));
Badge badge = databaseRepo.getBadge(badgeId); Badge badge = databaseRepo.getBadge(badgeId);
@ -36,6 +35,7 @@ public class BadgeDetails implements Response {
badgeJSON.put("logo", Base64.getEncoder().encodeToString(badge.getLogo())); badgeJSON.put("logo", Base64.getEncoder().encodeToString(badge.getLogo()));
badgeJSON.put("level", badge.getLevel()); badgeJSON.put("level", badge.getLevel());
} }
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
writer.write(badgeJSON.toJSONString().replace("\\", "")); writer.write(badgeJSON.toJSONString().replace("\\", ""));
} else { } else {
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");

View file

@ -23,10 +23,9 @@ public class ChapterElement implements Response {
this.databaseRepo = databaseRepo; this.databaseRepo = databaseRepo;
} }
@Route(path = "^\\/chapter\\/([0-9]+)$") @Route(path = "^\\/chapter\\/([0-9]+)$", needLogin = true)
@Override @Override
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception { public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
Chapter chapter = databaseRepo.getChapter(extractId(matcher)); Chapter chapter = databaseRepo.getChapter(extractId(matcher));
if (chapter != null) { if (chapter != null) {
JSONObject chapterJSON = new JSONObject(); JSONObject chapterJSON = new JSONObject();
@ -46,7 +45,10 @@ public class ChapterElement implements Response {
puzzles.add(puzzleJSON); puzzles.add(puzzleJSON);
} }
chapterJSON.put("puzzles", puzzles); chapterJSON.put("puzzles", puzzles);
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
writer.write(chapterJSON.toJSONString()); writer.write(chapterJSON.toJSONString());
} else {
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
} }
} }

View file

@ -23,10 +23,9 @@ public class ChapterList implements Response {
this.databaseRepo = databaseRepo; this.databaseRepo = databaseRepo;
} }
@Route(path = "^\\/chapters$") @Route(path = "^\\/chapters$", needLogin = true)
@Override @Override
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception { public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
List<Chapter> allChapters = databaseRepo.getAllChapters(); List<Chapter> allChapters = databaseRepo.getAllChapters();
if (allChapters != null) { if (allChapters != null) {
JSONArray chaptersJSON = new JSONArray(); JSONArray chaptersJSON = new JSONArray();
@ -40,7 +39,10 @@ public class ChapterList implements Response {
chapterJSON.put("endDate", chapter.getEndDate().toString()); chapterJSON.put("endDate", chapter.getEndDate().toString());
chaptersJSON.add(chapterJSON); chaptersJSON.add(chapterJSON);
} }
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
writer.write(chaptersJSON.toJSONString()); writer.write(chaptersJSON.toJSONString());
} else {
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
} }
} }

View file

@ -39,10 +39,10 @@ public class Login implements Response {
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *", HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *",
"Access-Control-Expose-Headers: Authorization", "Access-Control-Expose-Headers: Authorization",
"Authorization: Bearer " + this.router.createAuthUser(id)); "Authorization: Bearer " + this.router.createAuthUser(id));
return;
} }
} else {
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
} }
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
} }
} }

View file

@ -22,7 +22,7 @@ public class PlayerDetails implements Response {
this.databaseRepo = databaseRepo; this.databaseRepo = databaseRepo;
} }
@Route(path = "^\\/player\\/?(.+)?$") @Route(path = "^\\/player\\/?(.+)?$", needLogin = true)
@Override @Override
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception { public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
Player player; Player player;
@ -33,7 +33,6 @@ public class PlayerDetails implements Response {
} }
JSONObject playerJSON = new JSONObject(); JSONObject playerJSON = new JSONObject();
if (player != null) { if (player != null) {
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
playerJSON.put("pseudo", player.getPseudo()); playerJSON.put("pseudo", player.getPseudo());
playerJSON.put("email", player.getEmail()); playerJSON.put("email", player.getEmail());
playerJSON.put("firstname", player.getFirstname()); playerJSON.put("firstname", player.getFirstname());
@ -49,6 +48,7 @@ public class PlayerDetails implements Response {
playerJSON.put("badges", player.getJsonBadges()); playerJSON.put("badges", player.getJsonBadges());
if (player.getAvatar() != null) if (player.getAvatar() != null)
playerJSON.put("avatar", Base64.getEncoder().encodeToString(player.getAvatar())); playerJSON.put("avatar", Base64.getEncoder().encodeToString(player.getAvatar()));
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
writer.write(playerJSON.toJSONString().replace("\\", "")); writer.write(playerJSON.toJSONString().replace("\\", ""));
} else { } else {
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");

View file

@ -21,10 +21,9 @@ public class PuzzleElement implements Response {
this.databaseRepo = databaseRepo; this.databaseRepo = databaseRepo;
} }
@Route(path = "^\\/puzzle\\/([0-9]+)$") @Route(path = "^\\/puzzle\\/([0-9]+)$", needLogin = true)
@Override @Override
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception { public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *", "Content-Type: application/json");
Puzzle puzzle = databaseRepo.getPuzzle(extractId(matcher)); Puzzle puzzle = databaseRepo.getPuzzle(extractId(matcher));
if (puzzle != null) { if (puzzle != null) {
JSONObject puzzleJSON = new JSONObject(); JSONObject puzzleJSON = new JSONObject();
@ -35,8 +34,12 @@ public class PuzzleElement implements Response {
puzzleJSON.put("tags", puzzle.getJsonTags()); puzzleJSON.put("tags", puzzle.getJsonTags());
if (puzzle.getDepend() > 0) if (puzzle.getDepend() > 0)
puzzleJSON.put("depend", puzzle.getDepend()); puzzleJSON.put("depend", puzzle.getDepend());
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *", "Content-Type: application/json");
writer.write(puzzleJSON.toJSONString()); writer.write(puzzleJSON.toJSONString());
} }
else {
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
}
} }
private int extractId(Matcher matcher) { private int extractId(Matcher matcher) {

View file

@ -47,7 +47,7 @@ public class PuzzleResponse implements Response {
HttpUtil.responseHeaders(writer, 406, "Access-Control-Allow-Origin: *", "Content-Type: application/json"); HttpUtil.responseHeaders(writer, 406, "Access-Control-Allow-Origin: *", "Content-Type: application/json");
responseJSON.put("tries", completion.getTries()); responseJSON.put("tries", completion.getTries());
} else { } else {
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
return; return;
} }
writer.write(responseJSON.toJSONString()); writer.write(responseJSON.toJSONString());

View file

@ -67,15 +67,16 @@ public class Register implements Response {
return; return;
} }
} else { } else {
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
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;
} }
} else {
HttpUtil.responseHeaders(writer, 400, "Access-Control-Allow-Origin: *");
} }
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
} }
private void createFolderToSaveSourceCode(String pseudo) throws IOException { private void createFolderToSaveSourceCode(String pseudo) throws IOException {