Skip to content

Commit

Permalink
Retrieve realm from correct field in admin events (#79)
Browse files Browse the repository at this point in the history
* Retrieve realm from correct place

* Better bugfix and extra unit test

* test/test event case also covered by tests

* Test "user remove" events too

* Created from master / deleted from another realm case also covered
  • Loading branch information
FileJunkie authored Nov 26, 2024
1 parent d7a5858 commit 498cfb5
Show file tree
Hide file tree
Showing 5 changed files with 476 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ NOTES
.factorypath
.project
.settings/
bin
Original file line number Diff line number Diff line change
Expand Up @@ -157,12 +157,12 @@ private ExtendedAdminEvent completeAdminEventAttributes(String uid, Event event)
}

private ExtendedAdminEvent completeAdminEventAttributes(String uid, AdminEvent adminEvent) {
RealmModel realm = session.realms().getRealm(adminEvent.getAuthDetails().getRealmId());
ExtendedAdminEvent extendedAdminEvent = new ExtendedAdminEvent(uid, adminEvent, realm);
RealmModel eventRealm = session.realms().getRealm(adminEvent.getRealmId());
RealmModel authRealm = session.realms().getRealm(adminEvent.getAuthDetails().getRealmId());
ExtendedAdminEvent extendedAdminEvent = new ExtendedAdminEvent(uid, adminEvent, eventRealm, authRealm);
// add always missing agent username
ExtendedAuthDetails extendedAuthDetails = extendedAdminEvent.getAuthDetails();
if (!Strings.isNullOrEmpty(extendedAuthDetails.getUserId())) {
RealmModel authRealm = session.realms().getRealm(adminEvent.getAuthDetails().getRealmId());
UserModel user = session.users().getUserById(authRealm, extendedAuthDetails.getUserId());
extendedAuthDetails.setUsername(user.getUsername());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ private static String createType(Event event) {

public ExtendedAdminEvent() {}

public ExtendedAdminEvent(String uid, AdminEvent event, RealmModel realm) {
public ExtendedAdminEvent(String uid, AdminEvent event, RealmModel eventRealm, RealmModel authRealm) {
this.uid = uid;
this.type = createType(event);

setTime(event.getTime());
setRealmId(realm.getName());
setRealmId(eventRealm.getName());
setAuthDetails(event.getAuthDetails());
extAuthDetails.setRealmId(realm.getName());
extAuthDetails.setRealmId(authRealm.getName());
setResourceType(event.getResourceType());
setResourceTypeAsString(event.getResourceTypeAsString());
setOperationType(event.getOperationType());
Expand Down
14 changes: 14 additions & 0 deletions src/test/java/io/phasetwo/keycloak/Helpers.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,20 @@ public static String createWebhook(
return id;
}

public static void removeWebhook(
Keycloak keycloak,
CloseableHttpClient httpClient,
String baseUrl,
String webhookId)
throws Exception {

LegacySimpleHttp.Response response =
LegacySimpleHttp.doDelete(baseUrl + "/" + webhookId, httpClient)
.auth(keycloak.tokenManager().getAccessTokenString())
.asResponse();
assertThat(response.getStatus(), is(204));
}

public static String urlencode(String u) {
try {
return URLEncoder.encode(u, "UTF-8");
Expand Down
Loading

0 comments on commit 498cfb5

Please sign in to comment.