@@ -31,27 +31,34 @@ function Test-CIPPAccessUserRole {
3131 $uri = " https://graph.microsoft.com/beta/users/$ ( $User.userDetails ) /transitiveMemberOf"
3232 $Memberships = New-GraphGetRequest - uri $uri - NoAuthCheck $true | Where-Object { $_ .' @odata.type' -eq ' #microsoft.graph.group' }
3333 if ($Memberships ) {
34- Write-Information " Found user roles for $ ( $User.userDetails ) "
34+ Write-Information " Found group memberships for $ ( $User.userDetails ) "
3535 } else {
36- Write-Information " No user roles found for $ ( $User.userDetails ) "
36+ Write-Information " No group memberships found for $ ( $User.userDetails ) "
3737 }
3838 } catch {
3939 Write-Information " Could not get user roles for $ ( $User.userDetails ) . $ ( $_.Exception.Message ) "
4040 return $User
4141 }
4242
4343 $AccessGroupsTable = Get-CippTable - TableName AccessRoleGroups
44- $AccessGroups = Get-CIPPAzDataTableEntity @AccessGroupsTable
44+ $AccessGroups = Get-CIPPAzDataTableEntity @AccessGroupsTable - Filter " PartitionKey eq 'AccessRoleGroups'"
45+ $CustomRolesTable = Get-CippTable - TableName CustomRoles
46+ $CustomRoles = Get-CIPPAzDataTableEntity @CustomRolesTable - Filter " PartitionKey eq 'CustomRoles'"
47+ $BaseRoles = @ (' superadmin' , ' admin' , ' editor' , ' readonly' )
4548
4649 $Roles = foreach ($AccessGroup in $AccessGroups ) {
47- if ($Memberships.id -contains $AccessGroup.GroupId ) {
50+ if ($Memberships.id -contains $AccessGroup.GroupId -and ( $CustomRoles .RowKey -contains $AccessGroup .RowKey -or $BaseRoles -contains $AccessGroup .RowKey ) ) {
4851 $AccessGroup.RowKey
4952 }
5053 }
5154
5255 $Roles = @ ($Roles ) + @ ($User.userRoles )
5356
54- if (($Roles | Measure-Object ).Count -gt 0 ) {
57+ if ($Roles ) {
58+ Write-Information " Roles determined for $ ( $User.userDetails ) : $ ( $Roles -join ' , ' ) "
59+ }
60+
61+ if (($Roles | Measure-Object ).Count -gt 2 ) {
5562 $UserRole = [PSCustomObject ]@ {
5663 PartitionKey = ' AccessUser'
5764 RowKey = [string ]$User.userDetails
0 commit comments