Skip to content

Commit a1eeb5e

Browse files
committed
fix(auth): match permissions by base name
Update role permission filtering to compare normalized permission bases instead of exact strings. The code now strips `.Read`/`.ReadWrite` suffixes and uses a case-insensitive hash set of valid permissions, preventing legitimate role permissions from being incorrectly filtered out when access level suffixes differ.
1 parent 50087c4 commit a1eeb5e

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

Modules/CIPPCore/Public/Authentication/Get-CIPPRolePermissions.ps1

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ function Get-CIPPRolePermissions {
2525
try {
2626
$ValidPermissions = Get-CippHttpPermissions
2727
if (@($ValidPermissions).Count -gt 0) {
28-
$Permissions = @($Permissions | Where-Object { $ValidPermissions -contains $_ })
28+
$ValidBases = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::OrdinalIgnoreCase)
29+
foreach ($ValidPermission in $ValidPermissions) {
30+
$null = $ValidBases.Add(($ValidPermission -replace '\.(ReadWrite|Read)$', ''))
31+
}
32+
$Permissions = @($Permissions | Where-Object {
33+
$ValidBases.Contains(($_ -replace '\.(ReadWrite|Read)$', ''))
34+
})
2935
}
3036
} catch {
3137
Write-Warning "Unable to resolve valid permissions to filter role '$RoleName': $($_.Exception.Message)"

0 commit comments

Comments
 (0)