diff --git a/PeerAtCodeFramework.jar b/PeerAtCodeFramework.jar index 2957890..58440ec 100644 Binary files a/PeerAtCodeFramework.jar and b/PeerAtCodeFramework.jar differ diff --git a/src/dev/peerat/backend/Configuration.java b/src/dev/peerat/backend/Configuration.java index 242e9c3..aec677a 100644 --- a/src/dev/peerat/backend/Configuration.java +++ b/src/dev/peerat/backend/Configuration.java @@ -41,6 +41,8 @@ public class Configuration { private String mailFromAddress; private String git_token; + + private String jwt_key; private File _file; @@ -207,4 +209,12 @@ public class Configuration { public String getGitToken(){ return this.git_token; } + + public String getJwtKey(){ + return this.jwt_key; + } + + public void setJwtKey(String key){ + this.jwt_key = key; + } } \ No newline at end of file diff --git a/src/dev/peerat/backend/Main.java b/src/dev/peerat/backend/Main.java index e61b4f1..2ab7606 100644 --- a/src/dev/peerat/backend/Main.java +++ b/src/dev/peerat/backend/Main.java @@ -5,6 +5,7 @@ import static dev.peerat.framework.RequestType.OPTIONS; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import java.util.regex.Matcher; import dev.peerat.backend.bonus.extract.RouteExtracter; @@ -58,6 +59,8 @@ import dev.peerat.framework.Response; import dev.peerat.framework.Route; import dev.peerat.framework.RouteInterceptor; import dev.peerat.framework.Router; +import dev.peerat.framework.utils.json.JsonMap; +import dev.peerat.framework.utils.json.JsonParser; public class Main{ @@ -72,13 +75,6 @@ public class Main{ DatabaseRepository repo = new DatabaseRepository(config); Router router = new Router() - .configureJwt( - (builder) -> builder.setExpectedIssuer(config.getTokenIssuer()), - (claims) -> { - claims.setIssuer(config.getTokenIssuer()); // who creates the token and signs it - claims.setExpirationTimeMinutesInTheFuture(config.getTokenExpiration()); - }, - (claims) -> new PeerAtUser(claims)) .activeReOrdering(). addDefaultHeaders(RequestType.GET, "Access-Control-Allow-Origin: *"). addDefaultHeaders(RequestType.POST, "Access-Control-Allow-Origin: *"). @@ -87,6 +83,35 @@ public class Main{ "Access-Control-Allow-Methods: *", "Access-Control-Allow-Headers: *"); ACCESS_ROUTER = router; + + if(config.getJwtKey() != null){ + JsonParser parser = new JsonParser(); + JsonMap json = parser.parse(config.getJwtKey()); + Map params = new HashMap<>(); + for(Entry entry : json.entries()) params.put(entry.getKey(), entry.getValue()); + router.configureJwt( + (builder) -> builder.setExpectedIssuer(config.getTokenIssuer()), + (claims) -> { + claims.setIssuer(config.getTokenIssuer()); + claims.setExpirationTimeMinutesInTheFuture(config.getTokenExpiration()); + }, + (claims) -> new PeerAtUser(claims), + params); + }else{ + router.configureJwt( + (builder) -> builder.setExpectedIssuer(config.getTokenIssuer()), + (claims) -> { + claims.setIssuer(config.getTokenIssuer()); + claims.setExpirationTimeMinutesInTheFuture(config.getTokenExpiration()); + }, + (claims) -> new PeerAtUser(claims)); + JsonMap json = new JsonMap(); + for(Entry entry : router.exportJwtKey().entrySet()){ + json.set(entry.getKey(), entry.getValue()); + } + config.setJwtKey(json.toString()); + config.save(); + } router.setDefault((matcher, context, reader, writer) -> { context.response(404); diff --git a/src/dev/peerat/backend/routes/Leaderboard.java b/src/dev/peerat/backend/routes/Leaderboard.java index 5aef25f..c78984e 100644 --- a/src/dev/peerat/backend/routes/Leaderboard.java +++ b/src/dev/peerat/backend/routes/Leaderboard.java @@ -65,7 +65,7 @@ public class Leaderboard implements Response { } } leaderboardJSON.set("groups", groupsJSON); - writer.write(leaderboardJSON.toString().replace("\\", "")); + writer.write(leaderboardJSON.toString()); } public final void playersLeaderboard(HttpWriter writer) throws IOException { @@ -86,6 +86,6 @@ public class Leaderboard implements Response { playersJSON.add(playerJSON); } } - writer.write(playersJSON.toString().replace("\\", "")); + writer.write(playersJSON.toString()); } }