Skip to content

Commit 43f5dc6

Browse files
author
Gerald Unterrainer
committed
make userAccessInterceptor more accessible
1 parent a1e02bd commit 43f5dc6

File tree

4 files changed

+31
-20
lines changed

4 files changed

+31
-20
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<modelVersion>4.0.0</modelVersion>
1919
<artifactId>http-server</artifactId>
20-
<version>0.2.20</version>
20+
<version>0.2.21</version>
2121
<name>HttpServer</name>
2222
<packaging>jar</packaging>
2323

src/main/java/info/unterrainer/commons/httpserver/HttpServer.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
import java.util.concurrent.LinkedBlockingQueue;
1111
import java.util.concurrent.ThreadPoolExecutor;
1212
import java.util.concurrent.TimeUnit;
13-
import java.util.function.Consumer;
1413

1514
import org.eclipse.jetty.server.Server;
1615
import org.eclipse.jetty.server.ServerConnector;
1716

1817
import info.unterrainer.commons.httpserver.accessmanager.HttpAccessManager;
18+
import info.unterrainer.commons.httpserver.accessmanager.UserAccessInterceptor;
1919
import info.unterrainer.commons.httpserver.daos.CoreDaoProvider;
2020
import info.unterrainer.commons.httpserver.enums.Attribute;
2121
import info.unterrainer.commons.httpserver.enums.ResponseType;
@@ -28,7 +28,6 @@
2828
import info.unterrainer.commons.httpserver.handlers.HealthHandler;
2929
import info.unterrainer.commons.httpserver.handlers.PostmanCollectionHandler;
3030
import info.unterrainer.commons.httpserver.jsons.MessageJson;
31-
import info.unterrainer.commons.httpserver.jsons.UserDataJson;
3231
import info.unterrainer.commons.jreutils.ShutdownHook;
3332
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
3433
import info.unterrainer.commons.serialization.JsonMapper;
@@ -60,7 +59,7 @@ public class HttpServer {
6059
List<String> appVersionFqns;
6160
@Getter
6261
@Setter
63-
private Consumer<UserDataJson> userAccessInterceptor;
62+
private UserAccessInterceptor userAccessInterceptor;
6463
@Getter
6564
@Setter
6665
private String enumLookupFqnForInterceptorParser;

src/main/java/info/unterrainer/commons/httpserver/accessmanager/HttpAccessManager.java

+16-16
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import java.security.PublicKey;
1111
import java.util.HashSet;
1212
import java.util.Set;
13-
import java.util.function.Consumer;
1413

1514
import org.eclipse.jetty.http.HttpHeader;
1615
import org.keycloak.TokenVerifier;
@@ -183,23 +182,24 @@ private TokenVerifier<AccessToken> persistUserInfoInContext(final Context ctx) {
183182
clientRoles = token.getResourceAccess().get(key).getRoles();
184183
ctx.attribute(Attribute.USER_CLIENT_ROLES, clientRoles);
185184

186-
Consumer<UserDataJson> userAccessInterceptor = ((HttpServer) ctx.attribute(Attribute.JAVALIN_SERVER))
185+
UserAccessInterceptor userAccessInterceptor = ((HttpServer) ctx.attribute(Attribute.JAVALIN_SERVER))
187186
.getUserAccessInterceptor();
188187
if (userAccessInterceptor != null)
189-
userAccessInterceptor.accept(UserDataJson.builder()
190-
.userName(userName)
191-
.givenName(token.getGivenName())
192-
.client(token.getIssuedFor())
193-
.familyName(token.getFamilyName())
194-
.email(token.getEmail())
195-
.emailVerified(token.getEmailVerified())
196-
.realmRoles(token.getRealmAccess().getRoles())
197-
.readTenants(readTenants)
198-
.writeTenants(writeTenants)
199-
.clientRoles(clientRoles)
200-
.isActive(token.isActive())
201-
.isBearer(token.getType().equalsIgnoreCase("bearer"))
202-
.build());
188+
userAccessInterceptor.accept(ctx, token,
189+
UserDataJson.builder()
190+
.userName(userName)
191+
.givenName(token.getGivenName())
192+
.client(token.getIssuedFor())
193+
.familyName(token.getFamilyName())
194+
.email(token.getEmail())
195+
.emailVerified(token.getEmailVerified())
196+
.realmRoles(token.getRealmAccess().getRoles())
197+
.readTenants(readTenants)
198+
.writeTenants(writeTenants)
199+
.clientRoles(clientRoles)
200+
.isActive(token.isActive())
201+
.isBearer(token.getType().equalsIgnoreCase("bearer"))
202+
.build());
203203

204204
if (!token.isActive()) {
205205
setTokenRejectionReason(ctx, "Token is inactive.");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package info.unterrainer.commons.httpserver.accessmanager;
2+
3+
import org.keycloak.representations.AccessToken;
4+
5+
import info.unterrainer.commons.httpserver.jsons.UserDataJson;
6+
import io.javalin.http.Context;
7+
8+
@FunctionalInterface
9+
public interface UserAccessInterceptor {
10+
11+
void accept(Context ctx, AccessToken token, UserDataJson userDataJson);
12+
}

0 commit comments

Comments
 (0)