]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-15801 - Add accessible field to api/applications/search_projects (#5221)
authorbelen-pruvost-sonarsource <belen.pruvost@sonarsource.com>
Thu, 30 Dec 2021 09:33:39 +0000 (10:33 +0100)
committersonartech <sonartech@sonarsource.com>
Thu, 30 Dec 2021 20:03:07 +0000 (20:03 +0000)
server/sonar-webserver-auth/src/main/java/org/sonar/server/user/AbstractUserSession.java
server/sonar-webserver-auth/src/main/java/org/sonar/server/user/ThreadLocalUserSession.java
server/sonar-webserver-auth/src/main/java/org/sonar/server/user/UserSession.java
server/sonar-webserver-auth/src/test/java/org/sonar/server/user/ThreadLocalUserSessionTest.java
server/sonar-webserver-auth/src/testFixtures/java/org/sonar/server/tester/UserSessionRule.java

index c99021614777f1343f55dce80bf0eb76456d6f4c..9fec50125fca495b8167e68aa8e27ed66e75c90b 100644 (file)
@@ -105,6 +105,14 @@ public abstract class AbstractUserSession implements UserSession {
     return hasProjectUuidPermission(permission, project.getUuid());
   }
 
+  @Override
+  public final boolean hasProjectPermission(String permission, String projectUuid) {
+    if (isRoot()) {
+      return true;
+    }
+    return hasProjectUuidPermission(permission, projectUuid);
+  }
+
   @Override
   public final boolean hasChildProjectsPermission(String permission, ComponentDto component) {
     if (isRoot()) {
index 2584b0ac0c20847ec57973af0517c98363ef35b1..96096ccefe126691e2f650f0451f30499f77b9aa 100644 (file)
@@ -183,6 +183,11 @@ public class ThreadLocalUserSession implements UserSession {
     return get().hasProjectPermission(permission, project);
   }
 
+  @Override
+  public boolean hasProjectPermission(String permission, String projectUuid) {
+    return get().hasProjectPermission(permission, projectUuid);
+  }
+
   @Override
   public boolean hasChildProjectsPermission(String permission, ComponentDto component) {
     return get().hasChildProjectsPermission(permission, component);
index 157042f8f6cc4bb95070b9454a9132c8fff464c5..61992db77cc9196b78564b2bc688842f6a6b8ab6 100644 (file)
@@ -195,6 +195,8 @@ public interface UserSession {
 
   boolean hasProjectPermission(String permission, ProjectDto project);
 
+  boolean hasProjectPermission(String permission, String projectUuid);
+
   boolean hasChildProjectsPermission(String permission, ComponentDto component);
 
   boolean hasChildProjectsPermission(String permission, ProjectDto component);
index 81abd5180457a8ee92b285707f3d9a9bd39f9827..22dc9cc874501ecd7034c316ea8c40aeb6656527 100644 (file)
@@ -72,6 +72,31 @@ public class ThreadLocalUserSessionTest {
     assertThat(threadLocalUserSession.getGroups()).extracting(GroupDto::getUuid).containsOnly(group.getUuid());
     assertThat(threadLocalUserSession.hasChildProjectsPermission(USER, new ComponentDto())).isFalse();
     assertThat(threadLocalUserSession.hasChildProjectsPermission(USER, new ProjectDto())).isFalse();
+    assertThat(threadLocalUserSession.hasProjectPermission(USER, new ProjectDto().getUuid())).isFalse();
+  }
+
+  @Test
+  public void get_session_for_root_user() {
+    GroupDto group = GroupTesting.newGroupDto();
+    MockUserSession expected = new MockUserSession("root")
+      .setUuid("root-uuid")
+      .setResetPassword(true)
+      .setLastSonarlintConnectionDate(1000L)
+      .setGroups(group);
+    expected.setRoot(true);
+    threadLocalUserSession.set(expected);
+
+    UserSession session = threadLocalUserSession.get();
+    assertThat(session).isSameAs(expected);
+    assertThat(threadLocalUserSession.getLastSonarlintConnectionDate()).isEqualTo(1000L);
+    assertThat(threadLocalUserSession.getLogin()).isEqualTo("root");
+    assertThat(threadLocalUserSession.getUuid()).isEqualTo("root-uuid");
+    assertThat(threadLocalUserSession.isLoggedIn()).isTrue();
+    assertThat(threadLocalUserSession.shouldResetPassword()).isTrue();
+    assertThat(threadLocalUserSession.getGroups()).extracting(GroupDto::getUuid).containsOnly(group.getUuid());
+    assertThat(threadLocalUserSession.hasChildProjectsPermission(USER, new ComponentDto())).isTrue();
+    assertThat(threadLocalUserSession.hasChildProjectsPermission(USER, new ProjectDto())).isTrue();
+    assertThat(threadLocalUserSession.hasProjectPermission(USER, new ProjectDto().getUuid())).isTrue();
   }
 
   @Test
index 6077a66fa93a834b936ff6601abf45efed6968fb..7141fea1111b317c942e9b645a3bc6fc937de96f 100644 (file)
@@ -261,6 +261,11 @@ public class UserSessionRule implements TestRule, UserSession {
     return currentUserSession.hasProjectPermission(permission, project);
   }
 
+  @Override
+  public boolean hasProjectPermission(String permission, String projectUuid) {
+    return currentUserSession.hasProjectPermission(permission, projectUuid);
+  }
+
   @Override
   public boolean hasChildProjectsPermission(String permission, ComponentDto component) {
     return currentUserSession.hasChildProjectsPermission(permission, component);