135 boolean usernameChanged = userRep.getUsername() != null && !userRep.getUsername().equals(
user.getUsername());
136 if (realm.isEditUsernameAllowed()) {
137 if (usernameChanged) {
138 UserModel existing =
session.users().getUserByUsername(userRep.getUsername(),
realm);
139 if (existing != null) {
140 return ErrorResponse.exists(Messages.USERNAME_EXISTS);
143 user.setUsername(userRep.getUsername());
145 }
else if (usernameChanged) {
146 return ErrorResponse.error(Messages.READ_ONLY_USERNAME, Response.Status.BAD_REQUEST);
149 boolean emailChanged = userRep.getEmail() != null && !userRep.getEmail().equals(
user.getEmail());
150 if (emailChanged && !realm.isDuplicateEmailsAllowed()) {
151 UserModel existing =
session.users().getUserByEmail(userRep.getEmail(),
realm);
152 if (existing != null) {
153 return ErrorResponse.exists(Messages.EMAIL_EXISTS);
157 if (realm.isRegistrationEmailAsUsername() && !realm.isDuplicateEmailsAllowed()) {
158 UserModel existing =
session.users().getUserByUsername(userRep.getEmail(),
realm);
159 if (existing != null) {
160 return ErrorResponse.exists(Messages.USERNAME_EXISTS);
165 String oldEmail =
user.getEmail();
166 user.setEmail(userRep.getEmail());
167 user.setEmailVerified(
false);
168 event.clone().event(EventType.UPDATE_EMAIL).detail(Details.PREVIOUS_EMAIL, oldEmail).detail(Details.UPDATED_EMAIL, userRep.getEmail()).success();
170 if (realm.isRegistrationEmailAsUsername()) {
171 user.setUsername(userRep.getEmail());
175 user.setFirstName(userRep.getFirstName());
176 user.setLastName(userRep.getLastName());
178 if (userRep.getAttributes() != null) {
179 for (String k :
user.getAttributes().keySet()) {
180 if (!userRep.getAttributes().containsKey(k)) {
181 user.removeAttribute(k);
185 for (Map.Entry<String, List<String>> e : userRep.getAttributes().entrySet()) {
186 user.setAttribute(e.getKey(), e.getValue());
193 }
catch (ReadOnlyException e) {
194 return ErrorResponse.error(Messages.READ_ONLY_USER, Response.Status.BAD_REQUEST);
final KeycloakSession session
Definition: AccountRestService.java:63
ClientModel getClient()
Definition: Auth.java:63
AccessToken getToken()
Definition: Auth.java:67
Auth auth
Definition: AccountRestService.java:67
final UserModel user
Definition: AccountRestService.java:70
HttpRequest request
Definition: AccountRestService.java:57
void require(String role)
Definition: Auth.java:83
final RealmModel realm
Definition: AccountRestService.java:69