57 EventBuilder
event = context.getEvent();
58 event.event(EventType.UPDATE_PROFILE);
59 MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();
60 UserModel user = context.getUser();
61 KeycloakSession session = context.getSession();
62 RealmModel realm = context.getRealm();
65 List<FormMessage> errors = Validation.validateUpdateProfileForm(realm, formData);
66 if (errors != null && !errors.isEmpty()) {
67 Response challenge = context.form()
69 .setFormData(formData)
70 .createResponse(UserModel.RequiredAction.UPDATE_PROFILE);
71 context.challenge(challenge);
75 if (realm.isEditUsernameAllowed()) {
76 String username = formData.getFirst(
"username");
77 String oldUsername = user.getUsername();
79 boolean usernameChanged = oldUsername != null ? !oldUsername.equals(username) : username != null;
81 if (usernameChanged) {
83 if (session.users().getUserByUsername(username, realm) != null) {
84 Response challenge = context.form()
86 .setFormData(formData)
87 .createResponse(UserModel.RequiredAction.UPDATE_PROFILE);
88 context.challenge(challenge);
92 user.setUsername(username);
97 user.setFirstName(formData.getFirst(
"firstName"));
98 user.setLastName(formData.getFirst(
"lastName"));
100 String email = formData.getFirst(
"email");
102 String oldEmail = user.getEmail();
103 boolean emailChanged = oldEmail != null ? !oldEmail.equals(email) : email != null;
106 if (!realm.isDuplicateEmailsAllowed()) {
107 UserModel userByEmail = session.users().getUserByEmail(email, realm);
110 if (userByEmail != null && !userByEmail.getId().equals(user.getId())) {
111 Response challenge = context.form()
113 .setFormData(formData)
114 .createResponse(UserModel.RequiredAction.UPDATE_PROFILE);
115 context.challenge(challenge);
120 user.setEmail(email);
121 user.setEmailVerified(
false);
124 AttributeFormDataProcessor.process(formData, realm, user);
127 event.clone().event(EventType.UPDATE_EMAIL).detail(Details.PREVIOUS_EMAIL, oldEmail).detail(Details.UPDATED_EMAIL, email).success();
static final String EMAIL_EXISTS
Definition: Messages.java:67
static final String USERNAME_EXISTS
Definition: Messages.java:63
Definition: Messages.java:22