ExternalUser: Allow specifying a PropertyMap

PropertyMap is a concept of CurrentUser to store or cache per-user
state. This state is immutable for the lifetime of the object.

With this commit, we allow specifying this state for ExternalUser.

Change-Id: I41fc3d148d3cf3a0870f1bde1de5dd37ae0ebea5
This commit is contained in:
Patrick Hiesel
2021-01-05 14:10:58 +01:00
parent c6f5fdd8e2
commit 8c8a3922e7
2 changed files with 9 additions and 3 deletions

View File

@@ -38,7 +38,9 @@ public class ExternalUser extends CurrentUser {
public interface Factory {
ExternalUser create(
Collection<String> emailAddresses, Collection<ExternalId.Key> externalIdKeys);
Collection<String> emailAddresses,
Collection<ExternalId.Key> externalIdKeys,
PropertyMap propertyMap);
}
private final GroupBackend groupBackend;
@@ -51,7 +53,9 @@ public class ExternalUser extends CurrentUser {
public ExternalUser(
GroupBackend groupBackend,
@Assisted Collection<String> emailAddresses,
@Assisted Collection<ExternalId.Key> externalIdKeys) {
@Assisted Collection<ExternalId.Key> externalIdKeys,
@Assisted PropertyMap propertyMap) {
super(propertyMap);
this.groupBackend = groupBackend;
this.emailAddresses = ImmutableSet.copyOf(emailAddresses);
this.externalIdKeys = ImmutableSet.copyOf(externalIdKeys);

View File

@@ -41,6 +41,7 @@ import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.ExternalUser;
import com.google.gerrit.server.PropertyMap;
import com.google.gerrit.server.account.GroupBackend;
import com.google.gerrit.server.account.GroupMembership;
import com.google.gerrit.server.account.externalids.ExternalId;
@@ -294,6 +295,7 @@ public class ExternalUserPermissionIT extends AbstractDaemonTest {
ExternalUser createUserInGroup(String userId, String groupId) {
return externalUserFactory.create(
ImmutableSet.of(),
ImmutableSet.of(ExternalId.Key.parse("company-auth:" + groupId + "-" + userId)));
ImmutableSet.of(ExternalId.Key.parse("company-auth:" + groupId + "-" + userId)),
PropertyMap.EMPTY);
}
}