From 23006dfe6597bc706fa1200a8f6da30d9dbbe0d6 Mon Sep 17 00:00:00 2001 From: Jukka Jokiniva Date: Mon, 14 Jan 2019 09:51:31 +0200 Subject: Add QtStage permission QtStage permission controls stage and unstage functionality. Change-Id: Iea161ee5c2f86c48421c50ee8c6b87d8094d3c68 Reviewed-by: Daniel Smith --- java/com/google/gerrit/entities/Permission.java | 2 ++ java/com/google/gerrit/server/permissions/ChangeControl.java | 2 ++ java/com/google/gerrit/server/permissions/ChangePermission.java | 3 ++- .../google/gerrit/server/permissions/DefaultPermissionMappings.java | 1 + polygerrit-ui/app/utils/access-util.ts | 5 +++++ 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/java/com/google/gerrit/entities/Permission.java b/java/com/google/gerrit/entities/Permission.java index 95164bdee5..ab583422b0 100644 --- a/java/com/google/gerrit/entities/Permission.java +++ b/java/com/google/gerrit/entities/Permission.java @@ -54,6 +54,7 @@ public abstract class Permission implements Comparable { 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; @@ -90,6 +91,7 @@ public abstract class Permission implements Comparable { NAMES_LC.add(SUBMIT_AS.toLowerCase()); NAMES_LC.add(TOGGLE_WORK_IN_PROGRESS_STATE.toLowerCase()); NAMES_LC.add(VIEW_PRIVATE_CHANGES.toLowerCase()); + NAMES_LC.add(QT_STAGE.toLowerCase()); LABEL_INDEX = NAMES_LC.indexOf(Permission.LABEL); LABEL_AS_INDEX = NAMES_LC.indexOf(Permission.LABEL_AS.toLowerCase()); diff --git a/java/com/google/gerrit/server/permissions/ChangeControl.java b/java/com/google/gerrit/server/permissions/ChangeControl.java index 8d432c8f70..db21f619eb 100644 --- a/java/com/google/gerrit/server/permissions/ChangeControl.java +++ b/java/com/google/gerrit/server/permissions/ChangeControl.java @@ -281,6 +281,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 63b03787b2..0241e38679 100644 --- a/java/com/google/gerrit/server/permissions/ChangePermission.java +++ b/java/com/google/gerrit/server/permissions/ChangePermission.java @@ -57,7 +57,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; diff --git a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java index 9d69d9bad6..3ab68d73fd 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 > 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 { -- cgit v1.2.3