Remove timelimit for admin (PuzzleElement, PuzzleResponse)

This commit is contained in:
jeffcheasey88 2025-01-28 18:50:03 +01:00
parent e746d6fe2b
commit fbb8514afd
3 changed files with 21 additions and 6 deletions

View file

@ -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<PeerAtUser> router, DatabaseRepository repo, Configuration config) throws Exception{
Predicate<PeerAtUser> 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<>())

View file

@ -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<PeerAtUser> isAdmin;
public PuzzleElement(DatabaseRepository databaseRepo) {
public PuzzleElement(DatabaseRepository databaseRepo, Predicate<PeerAtUser> isAdmin){
this.databaseRepo = databaseRepo;
this.isAdmin = isAdmin;
}
@RouteDoc(path = "/puzzle/<id>", 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;

View file

@ -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<Completion> leaderboard;
private Predicate<PeerAtUser> isAdmin;
public PuzzleResponse(DatabaseRepository databaseRepo, Configuration config, @Injection("leaderboard") Locker<Completion> locker){
public PuzzleResponse(DatabaseRepository databaseRepo, Configuration config, @Injection("leaderboard") Locker<Completion> locker, Predicate<PeerAtUser> isAdmin){
this.databaseRepo = databaseRepo;
usersFilesPath = config.getUsersFiles();
this.leaderboard = locker;
this.isAdmin = isAdmin;
}
@RouteDoc(path = "/puzzleResponse/<id>", 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");