diff options
author | Jukka Jokiniva <jukka.jokiniva@qt.io> | 2019-01-14 09:51:31 +0200 |
---|---|---|
committer | Jukka Jokiniva <jukka.jokiniva@qt.io> | 2023-12-21 13:01:29 +0000 |
commit | 84cfdaa26a1f0f68b2b83a71149e6d192f59ad50 (patch) | |
tree | fdf29b5dbddee9983f48c6cd9b35363f07e20848 | |
parent | 7390975270b3af8b63b957138ec1473d05435419 (diff) |
Add QtStage permission
QtStage permission controls stage and unstage functionality.
Change-Id: Iea161ee5c2f86c48421c50ee8c6b87d8094d3c68
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
5 files changed, 13 insertions, 2 deletions
diff --git a/java/com/google/gerrit/entities/Permission.java b/java/com/google/gerrit/entities/Permission.java index 2a34579f88..fd4879a29d 100644 --- a/java/com/google/gerrit/entities/Permission.java +++ b/java/com/google/gerrit/entities/Permission.java @@ -55,6 +55,7 @@ public abstract class Permission implements Comparable<Permission> { public static final String SUBMIT_AS = "submitAs"; public static final String TOGGLE_WORK_IN_PROGRESS_STATE = "toggleWipState"; public static final String VIEW_PRIVATE_CHANGES = "viewPrivateChanges"; + public static final String QT_STAGE = "stage"; public static final boolean DEF_EXCLUSIVE_GROUP = false; @@ -80,18 +81,19 @@ public abstract class Permission implements Comparable<Permission> { NAMES_LC.add(FORGE_SERVER.toLowerCase(Locale.US)); NAMES_LC.add(LABEL.toLowerCase(Locale.US)); NAMES_LC.add(LABEL_AS.toLowerCase(Locale.US)); - NAMES_LC.add(REMOVE_LABEL.toLowerCase(Locale.US)); NAMES_LC.add(OWNER.toLowerCase(Locale.US)); NAMES_LC.add(PUSH.toLowerCase(Locale.US)); NAMES_LC.add(PUSH_MERGE.toLowerCase(Locale.US)); NAMES_LC.add(READ.toLowerCase(Locale.US)); NAMES_LC.add(REBASE.toLowerCase(Locale.US)); + NAMES_LC.add(REMOVE_LABEL.toLowerCase(Locale.US)); NAMES_LC.add(REMOVE_REVIEWER.toLowerCase(Locale.US)); NAMES_LC.add(REVERT.toLowerCase(Locale.US)); NAMES_LC.add(SUBMIT.toLowerCase(Locale.US)); NAMES_LC.add(SUBMIT_AS.toLowerCase(Locale.US)); NAMES_LC.add(TOGGLE_WORK_IN_PROGRESS_STATE.toLowerCase(Locale.US)); NAMES_LC.add(VIEW_PRIVATE_CHANGES.toLowerCase(Locale.US)); + NAMES_LC.add(QT_STAGE.toLowerCase(Locale.US)); LABEL_INDEX = NAMES_LC.indexOf(Permission.LABEL); LABEL_AS_INDEX = NAMES_LC.indexOf(Permission.LABEL_AS.toLowerCase(Locale.US)); diff --git a/java/com/google/gerrit/server/permissions/ChangeControl.java b/java/com/google/gerrit/server/permissions/ChangeControl.java index 993c68d52a..530c3c5677 100644 --- a/java/com/google/gerrit/server/permissions/ChangeControl.java +++ b/java/com/google/gerrit/server/permissions/ChangeControl.java @@ -280,6 +280,8 @@ class ChangeControl { case REMOVE_REVIEWER: case SUBMIT_AS: return refControl.canPerform(changePermissionName(perm)); + case QT_STAGE: + return refControl.canPerform(Permission.QT_STAGE); } } catch (StorageException e) { throw new PermissionBackendException("unavailable", e); diff --git a/java/com/google/gerrit/server/permissions/ChangePermission.java b/java/com/google/gerrit/server/permissions/ChangePermission.java index 7741adac62..e1e06d3dd5 100644 --- a/java/com/google/gerrit/server/permissions/ChangePermission.java +++ b/java/com/google/gerrit/server/permissions/ChangePermission.java @@ -74,7 +74,8 @@ public enum ChangePermission implements ChangePermissionOrLabel { REVERT, SUBMIT, SUBMIT_AS("submit on behalf of other users"), - TOGGLE_WORK_IN_PROGRESS_STATE; + TOGGLE_WORK_IN_PROGRESS_STATE, + QT_STAGE("stage change for CI"); private final String description; private final String hint; diff --git a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java index 958de1b293..e6cd962aef 100644 --- a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java +++ b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java @@ -102,6 +102,7 @@ public class DefaultPermissionMappings { .put( ChangePermission.TOGGLE_WORK_IN_PROGRESS_STATE, Permission.TOGGLE_WORK_IN_PROGRESS_STATE) + .put(ChangePermission.QT_STAGE, Permission.QT_STAGE) .build(); private static <T extends Enum<T>> void checkMapContainsAllEnumValues( diff --git a/polygerrit-ui/app/utils/access-util.ts b/polygerrit-ui/app/utils/access-util.ts index a567dd9b20..dbbd333bdb 100644 --- a/polygerrit-ui/app/utils/access-util.ts +++ b/polygerrit-ui/app/utils/access-util.ts @@ -30,6 +30,7 @@ export enum AccessPermissionId { SUBMIT_AS = 'submitAs', TOGGLE_WIP_STATE = 'toggleWipState', VIEW_PRIVATE_CHANGES = 'viewPrivateChanges', + QT_STAGE = 'stage', PRIORITY = 'priority', } @@ -131,6 +132,10 @@ export const AccessPermissions: {[id: string]: AccessPermission} = { id: AccessPermissionId.VIEW_PRIVATE_CHANGES, name: 'View Private Changes', }, + [AccessPermissionId.QT_STAGE]: { + id: AccessPermissionId.QT_STAGE, + name: 'Stage', + }, }; export interface AccessPermission { |