diff --git a/README.md b/README.md index f3cf979..e278f26 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ The script event listener allows you to run JS event listeners in the same fashi - `event`: the Event or AdminEvent - `realm`: the RealmModel - `user`: the UserModel (for `onEvent` only) +- `authUser`: the UserModel (for `onAdminEvent` only) - `session`: the KeycloakSession - `LOG`: a JBoss Logger @@ -68,7 +69,9 @@ function onAdminEvent(event, representation) { " on " + event.resourceType + " in realm " + - realm.name + realm.name + + " by user " + + authUser.username ); } ``` diff --git a/src/main/java/io/phasetwo/keycloak/events/Events.java b/src/main/java/io/phasetwo/keycloak/events/Events.java index e4fb6df..e3b9c7b 100644 --- a/src/main/java/io/phasetwo/keycloak/events/Events.java +++ b/src/main/java/io/phasetwo/keycloak/events/Events.java @@ -24,6 +24,13 @@ public static UserModel getUser(KeycloakSession session, Event event) { : null; } + public static UserModel getAuthUser(KeycloakSession session, AdminEvent event) { + RealmModel realm = getRealm(session, event); + return (event.getAuthDetails().getUserId() != null) + ? session.users().getUserById(realm, event.getAuthDetails().getUserId()) + : null; + } + public static String toString(Event event) { StringBuilder sb = new StringBuilder(); sb.append("type="); diff --git a/src/main/java/io/phasetwo/keycloak/events/ScriptEventListenerProvider.java b/src/main/java/io/phasetwo/keycloak/events/ScriptEventListenerProvider.java index bdbfa66..02e81d7 100644 --- a/src/main/java/io/phasetwo/keycloak/events/ScriptEventListenerProvider.java +++ b/src/main/java/io/phasetwo/keycloak/events/ScriptEventListenerProvider.java @@ -66,6 +66,7 @@ public void onEvent(AdminEvent event, boolean b) { bindings -> { bindings.put("event", event); bindings.put("realm", Events.getRealm(session, event)); + bindings.put("authUser", Events.getAuthUser(session, event)); bindings.put("session", session); bindings.put("LOG", log); });