From 8e414350c8c4e4a38bacffdb05cfbf642a8bd9fd Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Fri, 27 Nov 2015 14:41:24 +0900 Subject: [PATCH] InitAdminUser: Don't assume the group ID of the Administrators group When using a database configuration where auto-increment column values are pre-allocated, it is possible that the "Administrators" group is created with an ID other than "1". In this case, the created admin user will not be added to the correct group, and will not have the correct admin permissions. Instead of hard-coding the group ID, get it from the database. Bug: Issue 3698 Change-Id: Ie9b3f4f9166d03e91d58b2ec584c5ce47aa2021c --- .../main/java/com/google/gerrit/pgm/init/InitAdminUser.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java index c1f00904cd..3a4d0f2daf 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java @@ -23,6 +23,7 @@ import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountExternalId; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroupMember; +import com.google.gerrit.reviewdb.client.AccountGroupName; import com.google.gerrit.reviewdb.client.AuthType; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gwtorm.server.SchemaFactory; @@ -94,9 +95,11 @@ public class InitAdminUser implements InitStep { a.setPreferredEmail(email); db.accounts().insert(Collections.singleton(a)); + AccountGroupName adminGroup = db.accountGroupNames().get( + new AccountGroup.NameKey("Administrators")); AccountGroupMember m = new AccountGroupMember(new AccountGroupMember.Key(id, - new AccountGroup.Id(1))); + adminGroup.getId())); db.accountGroupMembers().insert(Collections.singleton(m)); } }