Skip to content
This repository has been archived by the owner on May 2, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1 from tributech-solutions/feature/enrich-event-info
Browse files Browse the repository at this point in the history
fix(event): enrich user info for certain keycloak events
  • Loading branch information
simonpfeifhofer authored Mar 26, 2021
2 parents 7d73711 + 47966c2 commit 7fea4a9
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
10 changes: 5 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<modelVersion>4.0.0</modelVersion>

<groupId>com.github.aznamier.keycloak.event.provider</groupId>
<artifactId>keycloak-to-rabbit</artifactId>
<artifactId>keycloak-to-rabbit-tributech-mod</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<version>1.1</version>



Expand All @@ -18,8 +18,8 @@
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub AZNAMIER Apache Maven Packages</name>
<url>https://maven.pkg.github.com/aznamier/keycloak-event-listener-rabbitmq</url>
<name>GitHub tributech-solutions Apache Maven Packages</name>
<url>https://maven.pkg.github.com/tributech-solutions/keycloak-event-listener-rabbitmq</url>
</repository>
</distributionManagement>

Expand Down Expand Up @@ -68,7 +68,7 @@
</dependencies>

<build>
<finalName>keycloak-to-rabbit</finalName>
<finalName>keycloak-to-rabbit-tributech-mod</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,15 @@
import java.util.HashMap;
import java.util.Map;

import org.jboss.logging.Logger;

import org.keycloak.events.Event;
import org.keycloak.events.EventType;
import org.keycloak.events.EventListenerProvider;
import org.keycloak.events.admin.AdminEvent;
import org.keycloak.events.Details;
import org.keycloak.models.UserModel;
import org.keycloak.models.KeycloakSession;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.AMQP.BasicProperties;
Expand All @@ -16,11 +22,14 @@

public class RabbitMqEventListenerProvider implements EventListenerProvider {

private static Logger logger = Logger.getLogger(RabbitMqEventListenerProvider.class);
private RabbitMqConfig cfg;
private ConnectionFactory factory;
private KeycloakSession session;

public RabbitMqEventListenerProvider(RabbitMqConfig cfg) {
public RabbitMqEventListenerProvider(RabbitMqConfig cfg, KeycloakSession session) {
this.cfg = cfg;
this.session = session;

this.factory = new ConnectionFactory();

Expand All @@ -38,6 +47,21 @@ public void close() {

@Override
public void onEvent(Event event) {
// we need to enrich event with more user information for certain event types
// see AccountRestService.java vs. AccountFormService.java
// https://github.com/keycloak/keycloak/pull/7495
if (event.getType().equals(EventType.UPDATE_PROFILE) || event.getType().equals(EventType.REGISTER)) {
logger.debugv("Enrich data at {0} event in RabbitMqEventListener", event.getType().name());
UserModel user = session.users().getUserById(event.getUserId(), session.getContext().getRealm());
if (event.getDetails() == null) {
event.setDetails(new HashMap<>());
}
event.getDetails().putIfAbsent(Details.USERNAME, user.getUsername());
event.getDetails().putIfAbsent("updated_email", user.getEmail());
event.getDetails().putIfAbsent("updated_first_name", user.getFirstName());
event.getDetails().putIfAbsent("updated_last_name", user.getLastName());;
}

EventClientNotificationMqMsg msg = EventClientNotificationMqMsg.create(event);
String routingKey = RabbitMqConfig.calculateRoutingKey(event);
String messageString = RabbitMqConfig.writeAsJson(msg, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class RabbitMqEventListenerProviderFactory implements EventListenerProvid

@Override
public EventListenerProvider create(KeycloakSession session) {
return new RabbitMqEventListenerProvider(cfg);
return new RabbitMqEventListenerProvider(cfg, session);
}

@Override
Expand Down

0 comments on commit 7fea4a9

Please sign in to comment.