GrantRevertPermission only adds the permisions once

Until now, if the permission somehow already existed, it will add
it another time.
This change ensures that it only adds the permission once.

Also, this change adds a minor reformat to the other test.

Change-Id: If68f0def0fe042b1a3f669b7118e8138aa29e7fb
This commit is contained in:
Gal Paikin
2020-05-08 12:42:51 +02:00
parent 9c1d58e60f
commit 5164b2cb5a
2 changed files with 28 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS
import static com.google.gerrit.server.schema.AclUtil.grant;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.entities.Project;
import com.google.gerrit.server.GerritPersonIdent;
@@ -57,12 +58,18 @@ public class GrantRevertPermission {
}
public void execute(Project.NameKey projectName) throws IOException, ConfigInvalidException {
GroupReference registeredUsers = systemGroupBackend.getGroup(REGISTERED_USERS);
try (Repository repo = repoManager.openRepository(projectName)) {
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, projectName, repo);
ProjectConfig projectConfig = projectConfigFactory.read(md);
AccessSection heads = projectConfig.getAccessSection(AccessSection.HEADS, true);
grant(projectConfig, heads, Permission.REVERT, systemGroupBackend.getGroup(REGISTERED_USERS));
Permission permission = heads.getPermission(Permission.REVERT);
if (permission != null && permission.getRule(registeredUsers) != null) {
// permission already exists, don't do anything.
return;
}
grant(projectConfig, heads, Permission.REVERT, registeredUsers);
md.getCommitBuilder().setAuthor(serverUser);
md.getCommitBuilder().setCommitter(serverUser);