summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/prickly/server/Server.java
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-10-12 21:17:12 +0200
committerLinnea Gräf <nea@nea.moe>2025-10-12 21:17:31 +0200
commitc87b9d73eaf66c88749ae69959de2b6994483569 (patch)
treeba93724c3b7fc3b93d8d5087f1122f8d601c6ca4 /src/main/java/moe/nea/prickly/server/Server.java
parentd872a6b1576b66ddd7b48f3ec0f77b8d5290fa62 (diff)
downloadprickly-c87b9d73eaf66c88749ae69959de2b6994483569.tar.gz
prickly-c87b9d73eaf66c88749ae69959de2b6994483569.tar.bz2
prickly-c87b9d73eaf66c88749ae69959de2b6994483569.zip
feat: add authorize redirection
Diffstat (limited to 'src/main/java/moe/nea/prickly/server/Server.java')
-rw-r--r--src/main/java/moe/nea/prickly/server/Server.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/main/java/moe/nea/prickly/server/Server.java b/src/main/java/moe/nea/prickly/server/Server.java
index dbea0be..120078a 100644
--- a/src/main/java/moe/nea/prickly/server/Server.java
+++ b/src/main/java/moe/nea/prickly/server/Server.java
@@ -9,13 +9,19 @@ import io.javalin.Javalin;
import io.javalin.config.JavalinConfig;
import io.javalin.rendering.template.JavalinJte;
import java.nio.file.Path;
+import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
+import moe.nea.prickly.auth.Authorizations;
import moe.nea.prickly.config.Config;
import moe.nea.prickly.model.AuthorizationRequest;
+import moe.nea.prickly.model.AuthorizeAction;
import moe.nea.prickly.util.BundleUtil;
+import moe.nea.prickly.util.JsonHelper;
import moe.nea.prickly.util.OAuthUtil;
+import moe.nea.prickly.util.QueryParameterHelper;
+import org.jspecify.annotations.Nullable;
@Slf4j
public class Server {
@@ -56,6 +62,23 @@ public class Server {
"authorizationRequest",
new AuthorizationRequest(responseType, redirectUri, state, scope)));
});
+ javalin.post(prefix + "/authorize", ctx -> {
+ var authRequest = JsonHelper.parseFormParam(ctx.formParam("authRequest"), AuthorizationRequest.class);
+ var action = AuthorizeAction.valueOf(ctx.formParam("action"));
+ var map = new HashMap<String, @Nullable String>();
+ map.put("state", authRequest.state());
+ switch (action) {
+ case ACCEPT: // TODO: differentiate authRequest.responseType()
+ map.put("code", Authorizations.createToken(Objects.requireNonNull(ctx.formParam("username"))));
+ break;
+ case DENY:
+ map.put("error", "access_denied");
+ map.put("error_description", "You have denied access to " + application.NAME);
+ break;
+ }
+ ctx.redirect(QueryParameterHelper.appendQuery(authRequest.redirectUri(), map)
+ .toString());
+ });
}
protected void configure(JavalinConfig config) {