How to persist custom user attributes to the user the profile

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.