From a336f01a713914aba816eeef2ac8f95be9a60876 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Wed, 2 Sep 2015 10:31:20 +0200 Subject: [PATCH] SONAR-6499 WS permissions/set_default_template set default permission template for projects, views or developer --- .../DefaultPermissionTemplates.java | 4 +- .../ws/AddGroupToTemplateAction.java | 4 +- .../ws/AddUserToTemplateAction.java | 4 +- .../permission/ws/DeleteTemplateAction.java | 4 +- .../server/permission/ws/Parameters.java | 4 +- .../ws/PermissionRequestValidator.java | 7 + .../permission/ws/PermissionsWsModule.java | 1 + .../ws/RemoveGroupFromTemplateAction.java | 4 +- .../ws/RemoveUserFromTemplateAction.java | 4 +- .../ws/SetDefaultTemplateAction.java | 133 +++++++++++++ .../permission/ws/UpdateTemplateAction.java | 4 +- .../server/permission/ws/WsProjectRef.java | 7 +- .../ws/PermissionsWsModuleTest.java | 2 +- .../ws/SetDefaultTemplateActionTest.java | 182 ++++++++++++++++++ 14 files changed, 343 insertions(+), 21 deletions(-) create mode 100644 server/sonar-server/src/main/java/org/sonar/server/permission/ws/SetDefaultTemplateAction.java create mode 100644 server/sonar-server/src/test/java/org/sonar/server/permission/ws/SetDefaultTemplateActionTest.java diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/DefaultPermissionTemplates.java b/server/sonar-server/src/main/java/org/sonar/server/permission/DefaultPermissionTemplates.java index ed1743a0537..b7618e2e185 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/DefaultPermissionTemplates.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/DefaultPermissionTemplates.java @@ -24,9 +24,9 @@ import static java.lang.String.format; public class DefaultPermissionTemplates { public static final String DEFAULT_TEMPLATE_PROPERTY = "sonar.permission.template.default"; - private static final String DEFAULT_ROOT_QUALIFIER_TEMPLATE_PROPERTY = "sonar.permission.template.%s.default"; + private static final String DEFAULT_ROOT_QUALIFIER_TEMPLATE_PATTERN = "sonar.permission.template.%s.default"; public static String defaultRootQualifierTemplateProperty(String qualifier) { - return format(DEFAULT_ROOT_QUALIFIER_TEMPLATE_PROPERTY, qualifier); + return format(DEFAULT_ROOT_QUALIFIER_TEMPLATE_PATTERN, qualifier); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java index e48bb2232d4..524b99f8787 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java @@ -75,7 +75,7 @@ public class AddGroupToTemplateAction implements PermissionsWsAction { public void handle(Request wsRequest, Response wsResponse) throws Exception { checkGlobalAdminUser(userSession); - String templateKey = wsRequest.mandatoryParam(PARAM_TEMPLATE_ID_EXPLICIT); + String templateUuid = wsRequest.mandatoryParam(PARAM_TEMPLATE_ID_EXPLICIT); String permission = wsRequest.mandatoryParam(PARAM_PERMISSION); WsGroupRef group = WsGroupRef.fromRequest(wsRequest); @@ -84,7 +84,7 @@ public class AddGroupToTemplateAction implements PermissionsWsAction { validateProjectPermission(permission); validateNotAnyoneAndAdminPermission(permission, group.name()); - PermissionTemplateDto template = dependenciesFinder.getTemplate(dbSession, templateKey); + PermissionTemplateDto template = dependenciesFinder.getTemplate(dbSession, templateUuid); GroupDto groupDto = dependenciesFinder.getGroup(dbSession, group); if (!groupAlreadyAdded(dbSession, template.getId(), groupDto, permission)) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java index 7cb65ba0be5..7e9656438e6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java @@ -74,14 +74,14 @@ public class AddUserToTemplateAction implements PermissionsWsAction { public void handle(Request wsRequest, Response wsResponse) throws Exception { checkGlobalAdminUser(userSession); - String templateKey = wsRequest.mandatoryParam(PARAM_TEMPLATE_ID_EXPLICIT); + String templateUuid = wsRequest.mandatoryParam(PARAM_TEMPLATE_ID_EXPLICIT); String permission = wsRequest.mandatoryParam(PARAM_PERMISSION); final String userLogin = wsRequest.mandatoryParam(PARAM_USER_LOGIN); DbSession dbSession = dbClient.openSession(false); try { validateProjectPermission(permission); - PermissionTemplateDto template = dependenciesFinder.getTemplate(dbSession, templateKey); + PermissionTemplateDto template = dependenciesFinder.getTemplate(dbSession, templateUuid); UserDto user = dependenciesFinder.getUser(dbSession, userLogin); if (!isUserAlreadyAdded(dbSession, template.getId(), userLogin, permission)) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java index 1e25d69cad1..bdafb42fdeb 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java @@ -31,7 +31,7 @@ import org.sonar.server.user.UserSession; import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser; import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_ID; -import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; +import static org.sonar.server.permission.ws.Parameters.createTemplateIdParameter; import static org.sonar.server.ws.WsUtils.checkRequest; public class DeleteTemplateAction implements PermissionsWsAction { @@ -56,7 +56,7 @@ public class DeleteTemplateAction implements PermissionsWsAction { .setPost(true) .setHandler(this); - createTemplateKeyParameter(action); + createTemplateIdParameter(action); } @Override diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java index b008c1577c7..f2ecba4137c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java @@ -41,6 +41,8 @@ class Parameters { static final String PARAM_TEMPLATE_DESCRIPTION = "description"; static final String PARAM_TEMPLATE_PATTERN = "projectKeyPattern"; + static final String PARAM_QUALIFIER = "qualifier"; + private static final String PERMISSION_PARAM_DESCRIPTION = format("Permission" + "