I am writing an EventListener SPI within which i am capturing a Register Event .
Whenever REGISTER event occurs I want to store some custom user attributes for the registered user.
could anyone suggest how do i achieve this.
I am writing an EventListener SPI within which i am capturing a Register Event .
Whenever REGISTER event occurs I want to store some custom user attributes for the registered user.
could anyone suggest how do i achieve this.
did you get any solution?
Something like this has worked for me:
public void onEvent(final Event event) {
if (EventType.REGISTER.equals(event.getType())) {
RealmModel realm = session.realms().getRealm(event.getRealmId());
UserModel user = session.users().getUserById(realm, event.getUserId());
if (user != null) {
KeycloakModelUtils.runJobInTransaction(
session.getKeycloakSessionFactory(),
s -> {
RealmModel r = session.realms().getRealm(event.getRealmId());
UserModel u = session.users().getUserById(r, event.getUserId());
u.setSingleAttribute("foo", "bar");
});
}
}
}
For some reason, I had trouble getting it to write if I didn’t create a separate transaction. It might also be possible to enlist a transaction on complete of session, but I haven’t tried that.