"When accessed anonymously, only logins and names are returned.")
.setSince("3.6")
.setChangelog(
+ new Change("7.4", "External identity is only returned to system administrators"),
new Change("6.4", "Paging response fields moved to a Paging object"),
new Change("6.4", "Avatar has been added to the response"),
new Change("6.4", "Email is only returned when user has Administer System permission"))
setIfNeeded(FIELD_AVATAR, fields, emptyToNull(user.getEmail()), u -> userBuilder.setAvatar(avatarResolver.create(user)));
setIfNeeded(FIELD_ACTIVE, fields, user.isActive(), userBuilder::setActive);
setIfNeeded(FIELD_LOCAL, fields, user.isLocal(), userBuilder::setLocal);
- setIfNeeded(FIELD_EXTERNAL_IDENTITY, fields, user.getExternalLogin(), userBuilder::setExternalIdentity);
setIfNeeded(FIELD_EXTERNAL_PROVIDER, fields, user.getExternalIdentityProvider(), userBuilder::setExternalProvider);
setIfNeeded(FIELD_TOKENS_COUNT, fields, tokensCount, userBuilder::setTokensCount);
setIfNeeded(isNeeded(FIELD_SCM_ACCOUNTS, fields) && !user.getScmAccountsAsList().isEmpty(), user.getScmAccountsAsList(),
setIfNeeded(FIELD_EMAIL, fields, user.getEmail(), userBuilder::setEmail);
setIfNeeded(isNeeded(FIELD_GROUPS, fields) && !groups.isEmpty(), groups,
g -> userBuilder.setGroups(Groups.newBuilder().addAllGroups(g)));
+ setIfNeeded(FIELD_EXTERNAL_IDENTITY, fields, user.getExternalLogin(), userBuilder::setExternalIdentity);
}
return userBuilder.build();
}
.containsExactlyInAnyOrder(tuple(user.getLogin(), false));
}
+ @Test
+ public void return_external_information() {
+ UserDto user = db.users().insertUser();
+ userIndexer.indexOnStartup(null);
+ userSession.logIn().setSystemAdministrator();
+
+ SearchWsResponse response = ws.newRequest()
+ .executeProtobuf(SearchWsResponse.class);
+
+ assertThat(response.getUsersList())
+ .extracting(User::getLogin, User::getExternalIdentity, User::getExternalProvider)
+ .containsExactlyInAnyOrder(tuple(user.getLogin(), user.getExternalLogin(), user.getExternalIdentityProvider()));
+ }
+
+ @Test
+ public void return_external_identity_only_when_system_administer() {
+ UserDto user = db.users().insertUser();
+ userIndexer.indexOnStartup(null);
+
+ userSession.logIn().setSystemAdministrator();
+ assertThat(ws.newRequest()
+ .executeProtobuf(SearchWsResponse.class).getUsersList())
+ .extracting(User::getLogin, User::getExternalIdentity)
+ .containsExactlyInAnyOrder(tuple(user.getLogin(), user.getExternalLogin()));
+
+ userSession.logIn();
+ assertThat(ws.newRequest()
+ .executeProtobuf(SearchWsResponse.class).getUsersList())
+ .extracting(User::getLogin, User::hasExternalIdentity)
+ .containsExactlyInAnyOrder(tuple(user.getLogin(), false));
+ }
+
@Test
public void only_return_login_and_name_when_not_logged() {
UserDto user = db.users().insertUser();