*/
package org.sonar.db.permission;
+import java.util.Arrays;
+import java.util.stream.Stream;
+
public enum OrganizationPermission {
ADMINISTER("admin"),
}
throw new IllegalArgumentException("Unsupported permission: " + key);
}
+
+ public static Stream<OrganizationPermission> all() {
+ return Arrays.stream(values());
+ }
}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.db.permission;
+
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class OrganizationPermissionTest {
+
+ @Test
+ public void fromKey_returns_enum_with_specified_key() {
+ for (OrganizationPermission p : OrganizationPermission.values()) {
+ assertThat(OrganizationPermission.fromKey(p.getKey())).isEqualTo(p);
+ }
+ }
+
+ @Test
+ public void all_returns_stream_of_values() {
+ assertThat(OrganizationPermission.all()).hasSize(OrganizationPermission.values().length);
+ for (OrganizationPermission permission : OrganizationPermission.values()) {
+ assertThat(OrganizationPermission.all()).contains(permission);
+ }
+ }
+}
import org.sonar.db.organization.DefaultTemplates;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.permission.GroupPermissionDto;
+import org.sonar.db.permission.OrganizationPermission;
import org.sonar.db.permission.UserPermissionDto;
import org.sonar.db.permission.template.PermissionTemplateCharacteristicDto;
import org.sonar.db.permission.template.PermissionTemplateDto;
OrganizationDto organization = insertOrganization(dbSession, newOrganization,
dto -> dto.setGuarded(true).setUserId(newUser.getId()));
- GlobalPermissions.ALL.forEach(permission -> insertUserPermissions(dbSession, newUser, organization, permission));
+ OrganizationPermission.all()
+ .forEach(p -> insertUserPermissions(dbSession, newUser, organization, p));
insertPersonalOrgDefaultTemplate(dbSession, organization);
dbSession.commit();
insertProjectCreatorPermission(dbSession, permissionTemplateDto, UserRole.ADMIN, now);
insertProjectCreatorPermission(dbSession, permissionTemplateDto, UserRole.ISSUE_ADMIN, now);
- insertProjectCreatorPermission(dbSession, permissionTemplateDto, GlobalPermissions.SCAN_EXECUTION, now);
+ insertProjectCreatorPermission(dbSession, permissionTemplateDto, OrganizationPermission.SCAN.getKey(), now);
insertGroupPermission(dbSession, permissionTemplateDto, UserRole.USER, null);
insertGroupPermission(dbSession, permissionTemplateDto, UserRole.CODEVIEWER, null);
.setOrganizationUuid(organization.getUuid())
.setName(OWNERS_GROUP_NAME)
.setDescription(format(OWNERS_GROUP_DESCRIPTION_PATTERN, organization.getName())));
- GlobalPermissions.ALL.forEach(permission -> addPermissionToGroup(dbSession, group, permission));
+ OrganizationPermission.all().forEach(p -> addPermissionToGroup(dbSession, group, p));
return group;
}
- private void addPermissionToGroup(DbSession dbSession, GroupDto group, String permission) {
+ private void addPermissionToGroup(DbSession dbSession, GroupDto group, OrganizationPermission permission) {
dbClient.groupPermissionDao().insert(
dbSession,
new GroupPermissionDto()
.setOrganizationUuid(group.getOrganizationUuid())
.setGroupId(group.getId())
- .setRole(permission));
+ .setRole(permission.getKey()));
}
- private void insertUserPermissions(DbSession dbSession, UserDto userDto, OrganizationDto organization, String permission) {
+ private void insertUserPermissions(DbSession dbSession, UserDto userDto, OrganizationDto organization, OrganizationPermission permission) {
dbClient.userPermissionDao().insert(
dbSession,
- new UserPermissionDto(organization.getUuid(), permission, userDto.getId(), null));
+ new UserPermissionDto(organization.getUuid(), permission.getKey(), userDto.getId(), null));
}
private void addCurrentUserToGroup(DbSession dbSession, GroupDto group, int createUserId) {
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
-import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.permission.OrganizationPermission;
import org.sonar.db.permission.PermissionQuery;
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.WsPermissions.Permission;
WsSearchGlobalPermissionsResponse.Builder response = WsSearchGlobalPermissionsResponse.newBuilder();
Permission.Builder permission = newBuilder();
- for (String permissionKey : GlobalPermissions.ALL) {
- PermissionQuery permissionQuery = permissionQuery(permissionKey);
-
- response.addPermissions(
- permission
- .clear()
- .setKey(permissionKey)
- .setName(i18nName(permissionKey))
- .setDescription(i18nDescriptionMessage(permissionKey))
- .setUsersCount(countUsers(dbSession, org, permissionQuery))
- .setGroupsCount(countGroups(dbSession, org, permissionKey)));
- }
+ OrganizationPermission.all()
+ .map(OrganizationPermission::getKey)
+ .forEach(permissionKey -> {
+ PermissionQuery query = permissionQuery(permissionKey);
+ response.addPermissions(
+ permission
+ .clear()
+ .setKey(permissionKey)
+ .setName(i18nName(permissionKey))
+ .setDescription(i18nDescriptionMessage(permissionKey))
+ .setUsersCount(countUsers(dbSession, org, query))
+ .setGroupsCount(countGroups(dbSession, org, permissionKey)));
+ });
return response.build();
}
*/
package org.sonar.server.user.ws;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Optional;
import org.sonar.api.server.ws.Request;
import org.sonar.api.utils.text.JsonWriter;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
+import org.sonar.db.permission.OrganizationPermission;
import org.sonar.db.user.UserDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
-import org.sonar.db.permission.OrganizationPermission;
import org.sonar.server.user.UserSession;
import static com.google.common.base.Strings.isNullOrEmpty;
json.name("global").beginArray();
String defaultOrganizationUuid = defaultOrganizationProvider.get().getUuid();
- Arrays.stream(OrganizationPermission.values())
+ OrganizationPermission.all()
.filter(permission -> userSession.hasPermission(permission, defaultOrganizationUuid))
.forEach(permission -> json.value(permission.getKey()));
*/
package org.sonar.server.organization.ws;
-import java.util.Arrays;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.server.ws.WebService;
OrganizationDto organization2 = dbTester.organizations().insert();
GroupDto group = dbTester.users().insertGroup(organization2);
dbTester.users().insertMember(group, user);
- Arrays.stream(OrganizationPermission.values())
- .filter(s -> s != ADMINISTER)
- .forEach(s -> {
- dbTester.users().insertPermissionOnUser(organization1, user, s);
- dbTester.users().insertPermissionOnGroup(group, s);
+ OrganizationPermission.all()
+ .filter(p -> p != ADMINISTER)
+ .forEach(p -> {
+ dbTester.users().insertPermissionOnUser(organization1, user, p);
+ dbTester.users().insertPermissionOnGroup(group, p);
});
userSessionRule.logIn(user);