Skip to content

Commit b2ec4f3

Browse files
committed
Don't use user.manage permission for packet management permission checks
1 parent 01427e2 commit b2ec4f3

6 files changed

Lines changed: 10 additions & 49 deletions

File tree

api/app/src/main/kotlin/packit/security/PermissionChecker.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ interface PermissionChecker {
1010
fun hasGlobalReadPermission(authorities: List<String> = emptyList()): Boolean
1111

1212
/** Manage packets */
13-
fun canManageAllPackets(authorities: List<String> = emptyList()): Boolean
1413
fun hasPacketManagePermissionForGroup(authorities: List<String> = emptyList(), packetGroupName: String): Boolean
1514
fun canManagePacketGroup(authorities: List<String> = emptyList(), packetGroupName: String): Boolean
1615
fun hasPacketManagePermissionForPacket(
@@ -50,17 +49,14 @@ class BasePermissionChecker(private val permissionService: PermissionService) :
5049
authorities.contains("packet.read")
5150

5251
/** Manage packets */
53-
override fun canManageAllPackets(authorities: List<String>): Boolean =
54-
hasUserManagePermission(authorities) || hasGlobalPacketManagePermission(authorities)
55-
5652
override fun hasPacketManagePermissionForGroup(
5753
authorities: List<String>,
5854
packetGroupName: String
5955
): Boolean =
6056
authorities.contains(permissionService.buildScopedPermission("packet.manage", packetGroupName))
6157

6258
override fun canManagePacketGroup(authorities: List<String>, packetGroupName: String): Boolean =
63-
canManageAllPackets(authorities) || hasPacketManagePermissionForGroup(authorities, packetGroupName)
59+
hasGlobalPacketManagePermission(authorities) || hasPacketManagePermissionForGroup(authorities, packetGroupName)
6460

6561
override fun hasPacketManagePermissionForPacket(
6662
authorities: List<String>,
@@ -79,7 +75,7 @@ class BasePermissionChecker(private val permissionService: PermissionService) :
7975

8076
/** Read packets */
8177
override fun canReadAllPackets(authorities: List<String>): Boolean =
82-
canManageAllPackets(authorities) || hasGlobalReadPermission(authorities)
78+
hasGlobalPacketManagePermission(authorities) || hasGlobalReadPermission(authorities)
8379

8480
override fun hasPacketReadPermissionForGroup(authorities: List<String>, packetGroupName: String): Boolean =
8581
authorities.contains(permissionService.buildScopedPermission("packet.read", packetGroupName))

api/app/src/main/kotlin/packit/service/PacketGroupService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class BasePacketGroupService(
6868
val allPacketGroups = packetGroupRepository.findAll()
6969
val authorities = SecurityContextHolder.getContext().authentication.authorities.map { it.authority }
7070

71-
return if (permissionChecker.canManageAllPackets(authorities)) {
71+
return if (permissionChecker.hasGlobalPacketManagePermission(authorities)) {
7272
allPacketGroups
7373
} else {
7474
allPacketGroups.filter {

api/app/src/test/kotlin/packit/unit/service/PacketGroupServiceTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ class PacketGroupServiceTest {
178178
whenever(packetGroupRepository.findAll()).thenReturn(allPacketGroups)
179179
val authorities = listOf("MANAGE_GROUP1", "MANAGE_GROUP2")
180180
setupSecurityContext(authorities)
181-
whenever(permissionChecker.canManageAllPackets(authorities)).thenReturn(false)
181+
whenever(permissionChecker.hasGlobalPacketManagePermission(authorities)).thenReturn(false)
182182
whenever(permissionChecker.hasPacketManagePermissionForGroup(authorities, "group1")).thenReturn(true)
183183
whenever(permissionChecker.hasPacketManagePermissionForGroup(authorities, "group2")).thenReturn(true)
184184
whenever(permissionChecker.hasPacketManagePermissionForGroup(authorities, "group3")).thenReturn(false)
@@ -192,7 +192,7 @@ class PacketGroupServiceTest {
192192
assertEquals(2, result.size)
193193
assertEquals("group1", result[0].name)
194194
assertEquals("group2", result[1].name)
195-
verify(permissionChecker).canManageAllPackets(authorities)
195+
verify(permissionChecker).hasGlobalPacketManagePermission(authorities)
196196
verify(permissionChecker, times(3)).hasPacketManagePermissionForGroup(any(), any())
197197
}
198198

@@ -207,7 +207,7 @@ class PacketGroupServiceTest {
207207
whenever(packetGroupRepository.findAll()).thenReturn(allPacketGroups)
208208
val authorities = listOf("NO_PERMISSIONS")
209209
setupSecurityContext(authorities)
210-
whenever(permissionChecker.canManageAllPackets(authorities)).thenReturn(false)
210+
whenever(permissionChecker.hasGlobalPacketManagePermission(authorities)).thenReturn(false)
211211
whenever(permissionChecker.hasPacketManagePermissionForGroup(eq(authorities), any())).thenReturn(false)
212212

213213
val sut = BasePacketGroupService(packetGroupRepository, packetService, permissionChecker)
@@ -217,7 +217,7 @@ class PacketGroupServiceTest {
217217

218218
// Verify
219219
assertTrue { result.isEmpty() }
220-
verify(permissionChecker).canManageAllPackets(authorities)
220+
verify(permissionChecker).hasGlobalPacketManagePermission(authorities)
221221
verify(permissionChecker, times(3)).hasPacketManagePermissionForGroup(any(), any())
222222
}
223223

@@ -227,7 +227,7 @@ class PacketGroupServiceTest {
227227
whenever(packetGroupRepository.findAll()).thenReturn(emptyList())
228228
val authorities = listOf("MANAGE_ALL")
229229
setupSecurityContext(authorities)
230-
whenever(permissionChecker.canManageAllPackets(authorities)).thenReturn(true)
230+
whenever(permissionChecker.hasGlobalPacketManagePermission(authorities)).thenReturn(true)
231231

232232
val sut = BasePacketGroupService(packetGroupRepository, packetService, permissionChecker)
233233

@@ -236,7 +236,7 @@ class PacketGroupServiceTest {
236236

237237
// Verify
238238
assertTrue(result.isEmpty())
239-
verify(permissionChecker).canManageAllPackets(authorities)
239+
verify(permissionChecker).hasGlobalPacketManagePermission(authorities)
240240
verify(permissionChecker, never()).hasPacketManagePermissionForGroup(any(), any())
241241
}
242242

api/app/src/test/kotlin/packit/unit/service/PermissionCheckerTest.kt

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,6 @@ class PermissionCheckerTest {
7070

7171
@Nested
7272
inner class ManagePacketsPermissions {
73-
74-
@Test
75-
fun canManageAllPacketsWithUserManage() {
76-
assertTrue(permissionChecker.canManageAllPackets(listOf("user.manage")))
77-
}
78-
79-
@Test
80-
fun canManageAllPacketsWithGlobalPacketManage() {
81-
assertTrue(permissionChecker.canManageAllPackets(listOf("packet.manage")))
82-
}
83-
84-
@Test
85-
fun cannotManageAllPacketsWithoutProperPermissions() {
86-
assertFalse(permissionChecker.canManageAllPackets(listOf("other.permission")))
87-
assertFalse(permissionChecker.canManageAllPackets(emptyList()))
88-
}
89-
9073
@Test
9174
fun hasPacketManagePermissionForGroup() {
9275
assertTrue(

app/src/lib/auth/hasPermission.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@ export const hasGlobalPacketManagePermission = (authorities: string[] = []) => a
77
export const hasGlobalReadPermission = (authorities: string[] = []) => authorities.includes("packet.read");
88

99
/** Manage packets */
10-
export const canManageAllPackets = (authorities: string[] = []) =>
11-
hasUserManagePermission(authorities) || hasGlobalPacketManagePermission(authorities);
12-
1310
export const hasPacketManagePermissionForGroup = (authorities: string[] = [], packetGroupName: string) =>
1411
authorities.includes(buildScopedPermission("packet.manage", packetGroupName));
1512

1613
export const canManagePacketGroup = (authorities: string[] = [], packetGroupName: string) =>
17-
canManageAllPackets(authorities) || hasPacketManagePermissionForGroup(authorities, packetGroupName);
14+
hasGlobalPacketManagePermission(authorities) || hasPacketManagePermissionForGroup(authorities, packetGroupName);
1815

1916
export const hasPacketManagePermissionForPacket = (
2017
authorities: string[] = [],

app/src/tests/lib/auth/hasPermission.test.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import {
2-
canManageAllPackets,
32
canManagePacket,
43
canManagePacketGroup,
54
hasGlobalPacketManagePermission,
@@ -65,20 +64,6 @@ describe("hasPermission functions", () => {
6564
});
6665

6766
describe("Packet management permission functions", () => {
68-
describe("canManageAllPackets", () => {
69-
it("returns true when has 'user.manage' authority", () => {
70-
expect(canManageAllPackets(["user.manage"])).toBe(true);
71-
});
72-
73-
it("returns true when has 'packet.manage' authority", () => {
74-
expect(canManageAllPackets(["packet.manage"])).toBe(true);
75-
});
76-
77-
it("returns false when has neither 'user.manage' nor 'packet.manage' authorities", () => {
78-
expect(canManageAllPackets(["packet.manage:packetGroup:groupA", "packet.run"])).toBe(false);
79-
});
80-
});
81-
8267
describe("hasPacketManagePermissionForGroup", () => {
8368
it("returns true when has scoped manage permission for the group", () => {
8469
expect(hasPacketManagePermissionForGroup(["packet.manage:packetGroup:groupA"], "groupA")).toBe(true);

0 commit comments

Comments
 (0)