diff --git a/src/dev/peerat/backend/Main.java b/src/dev/peerat/backend/Main.java index a3b34e3..20fdef7 100644 --- a/src/dev/peerat/backend/Main.java +++ b/src/dev/peerat/backend/Main.java @@ -6,13 +6,13 @@ import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.function.Predicate; import java.util.regex.Matcher; import dev.peerat.backend.bonus.extract.RouteExtracter; import dev.peerat.backend.model.Group; import dev.peerat.backend.model.PeerAtUser; import dev.peerat.backend.repository.ConnectionManager; -import dev.peerat.backend.repository.DatabaseBadgeRepository; import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.framework.Context; import dev.peerat.framework.DependencyInjector; @@ -163,8 +163,17 @@ public class Main{ } private static void initRoutes(Router router, DatabaseRepository repo, Configuration config) throws Exception{ + + Predicate isAdmin = (user) -> { + try { + Group group = repo.getGroupRepository().getPlayerGroup(user.getId(), 1); + return group.getName().equalsIgnoreCase("Quarter-Master - Battles PAC x CEI"); + }catch(Exception ex){} + return false; + }; + router.registerPackages("dev.peerat.backend.routes",new DependencyInjector() - .of(repo, router, config, new RouteExtracter(router), config.getMail()) + .of(repo, router, config, new RouteExtracter(router), config.getMail(), isAdmin) .of("waitting", new HashMap<>()) .of("leaderboard", new Locker<>()) .of("groups", new Locker<>()) diff --git a/src/dev/peerat/backend/routes/PuzzleElement.java b/src/dev/peerat/backend/routes/PuzzleElement.java index 3c65561..9070350 100644 --- a/src/dev/peerat/backend/routes/PuzzleElement.java +++ b/src/dev/peerat/backend/routes/PuzzleElement.java @@ -1,6 +1,7 @@ package dev.peerat.backend.routes; import java.time.LocalDateTime; +import java.util.function.Predicate; import java.util.regex.Matcher; import dev.peerat.backend.bonus.extract.RouteDoc; @@ -19,9 +20,11 @@ import dev.peerat.framework.utils.json.JsonMap; public class PuzzleElement implements Response { private final DatabaseRepository databaseRepo; + private Predicate isAdmin; - public PuzzleElement(DatabaseRepository databaseRepo) { + public PuzzleElement(DatabaseRepository databaseRepo, Predicate isAdmin){ this.databaseRepo = databaseRepo; + this.isAdmin = isAdmin; } @RouteDoc(path = "/puzzle/", responseCode = 200, responseDescription = "JSON contenant les informations du puzzle") @@ -33,7 +36,7 @@ public class PuzzleElement implements Response { Puzzle puzzle = databaseRepo.getPuzzleRepository().getPuzzle(extractId(matcher)); if (puzzle != null){ Chapter chapter = this.databaseRepo.getChapterRepository().getChapter(puzzle); - if(chapter.getStartDate() != null){ + if(chapter.getStartDate() != null && !isAdmin.test(context.getUser())){ if(LocalDateTime.now().isBefore(chapter.getStartDate().toLocalDateTime())){ context.response(423); return; diff --git a/src/dev/peerat/backend/routes/PuzzleResponse.java b/src/dev/peerat/backend/routes/PuzzleResponse.java index 009eb69..c415f5e 100644 --- a/src/dev/peerat/backend/routes/PuzzleResponse.java +++ b/src/dev/peerat/backend/routes/PuzzleResponse.java @@ -9,6 +9,7 @@ import java.nio.file.Paths; import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; +import java.util.function.Predicate; import java.util.regex.Matcher; import dev.peerat.backend.Configuration; @@ -34,11 +35,13 @@ public class PuzzleResponse implements Response { private final String usersFilesPath; private final Locker leaderboard; + private Predicate isAdmin; - public PuzzleResponse(DatabaseRepository databaseRepo, Configuration config, @Injection("leaderboard") Locker locker){ + public PuzzleResponse(DatabaseRepository databaseRepo, Configuration config, @Injection("leaderboard") Locker locker, Predicate isAdmin){ this.databaseRepo = databaseRepo; usersFilesPath = config.getUsersFiles(); this.leaderboard = locker; + this.isAdmin = isAdmin; } @RouteDoc(path = "/puzzleResponse/", responseCode = 200, responseDescription = "Bonne réponse, json contenant les points + tries") @@ -74,7 +77,7 @@ public class PuzzleResponse implements Response { context.response(423); return; } - if(chapter.getEndDate() != null){ + if(chapter.getEndDate() != null && !isAdmin.test(context.getUser())){ if(LocalDateTime.now().isAfter(chapter.getEndDate().toLocalDateTime())){ if(Arrays.equals(currentPuzzle.getSoluce(), received.getResponse())){ context.response(200, "Content-Type: application/json");