[keycloak-user] REGISTER event: firstName & lastName always NULL
Marek Posolda
mposolda at redhat.com
Tue Jan 9 15:47:14 EST 2018
Not 100% sure, but I think that you're right and firstName and lastName
are not available in the REGISTER event. That's because REGISTER event
is triggered too early - at the stage when userModel doesn't yet have
firstName and lastName properly set on it.
I think there are some workarounds - for example there is LOGIN event,
which is send right after the REGISTER. You can track LOGIN events,
which were sent right after the REGISTER events. I think that firstName,
lastName should be available in those LOGIN events.
Marek
On 09/01/18 11:01, Thilo Frotscher wrote:
> Hi all,
>
> In our project there is a requirement to execute some actions after successful
> user registrations. I implemented an EventListenerProvider that listens to events
> of type REGISTER. The details of this event type only contain the "username" of
> the user that just registered, but first name and last name are missing.
>
> So I thought I could retrieve this information from the user storage. But no
> matter how I try to read the user information from the user storage, firstName
> and lastName are always null.
>
> Is this a bug or a feature? When manually logging on to the Admin Console,
> I can see that firstName and lastName have been correctly saved. But how
> can I programmatically retrieve the first name and last name of the user
> that just registered in my event listener?
>
> Sample code:
>
> public void onEvent(Event event) {
>
> if (!EventType.REGISTER.equals(event.getType())) {
> LOGGER.info("Ignoring event of type " + event.getType());
> return;
> }
>
> String realmId = event.getRealmId();
> RealmModel realm = session.realms().getRealm(realmId);
>
> String userId = event.getUserId();
>
> Map<String, String> details = event.getDetails();
> String username = details.get("username");
>
> printUser(session.users().getUserByUsername(username, realm));
> printUser(session.userLocalStorage().getUserByUsername(username, realm));
> printUser(session.userCache().getUserByUsername(username, realm));
> printUser(session.userStorageManager().getUserByUsername(username, realm));
>
> }
>
> private void printUser(UserModel user) {
> if (user==null) {
> LOGGER.info("User is null");
> } else {
> LOGGER.info(user.getFirstName()); // always null
> LOGGER.info(user.getLastName()); // always null
> LOGGER.info(user.getId());
> LOGGER.info(user.getEmail());
> LOGGER.info(user.getUsername());
> }
> }
>
> Actually, I believe firstName and lastName should be part of the event details
> in the first place...
>
> Thanks for your help!
>
> Cheers,
> Thilo
> _______________________________________________
> keycloak-user mailing list
> keycloak-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-user
More information about the keycloak-user
mailing list