Skip to content

Commit

Permalink
Merge pull request #3418 from NikCharlebois/FIXES-#3417
Browse files Browse the repository at this point in the history
FIXES #3417
  • Loading branch information
NikCharlebois committed Jun 26, 2023
2 parents fa13d52 + 5b46c88 commit 9db468f
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 13 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
FIXES [#3407](https://github.com/microsoft/Microsoft365DSC/issues/3407)
* DEPENDENCIES
* Updated ReverseDSC to version 2.0.0.16.
* MISC
* Fixes an issue with Update-M365DSCAzureAdApplication where it was throwing an eroor complaining about duplicate keys.
FIXES #3417

# 1.23.621.1

Expand Down
40 changes: 27 additions & 13 deletions Modules/Microsoft365DSC/Modules/M365DSCPermissions.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -1414,8 +1414,7 @@ function Update-M365DSCAzureAdApplication
{
Write-LogEntry ' '
Write-LogEntry 'Checking app permissions'
$permissionsSet = $false
$allRequiredAccess = @()
$allRequiredAccess = @{}
foreach ($permission in $Permissions)
{
if ($permission.Api -eq $null -or $permission.Api -notin @('Graph', 'SharePoint', 'Exchange'))
Expand Down Expand Up @@ -1445,9 +1444,11 @@ function Update-M365DSCAzureAdApplication

if ($null -eq $appRole)
{
$currentAPIAccess = @{
ResourceAppId = $svcprincipal.AppId
ResourceAccess = @()
$currentAPIAccess = $allRequiredAccess.($svcprincipal.AppId)

if ($null -eq $currentAPIAccess)
{
$allRequiredAccess.Add(($svcprincipal.AppId), @())
}
$role = $svcPrincipal.AppRoles | Where-Object -FilterScript { $_.Value -eq $permission.PermissionName }
if ($null -eq $role)
Expand All @@ -1468,22 +1469,35 @@ function Update-M365DSCAzureAdApplication
Type = 'Role'
}
}
$currentAPIAccess.ResourceAccess += $appPermission
$permissionsSet = $true

if ($null -ne $currentAPIAccess)
{
$allRequiredAccess += $currentAPIAccess
}
$allRequiredAccess.($svcprincipal.AppId) += $appPermission
}
else
{
Write-LogEntry " Permission '$($permission.Api)\$($permission.PermissionName)' already added to the application!"
}
}

$requiredResourceAccess = @()
foreach ($provider in $allRequiredAccess.Keys)
{
$valueToAdd = @{
ResourceAppId = $provider
ResourceAccess = @()
}

foreach ($permissionEntry in $allRequiredAccess.$provider)
{
$permissionToAdd = @{
Type = $permissionEntry.Type
Id = $permissionEntry.Id
}
$valueToAdd.ResourceAccess += $permissionToAdd
}
$requiredResourceAccess += $valueToAdd
}

Update-MgApplication -ApplicationId ($azureADApp.Id) `
-RequiredResourceAccess $allRequiredAccess | Out-Null
-RequiredResourceAccess $requiredResourceAccess | Out-Null

Write-LogEntry ' Permission updated for application'

Expand Down

0 comments on commit 9db468f

Please sign in to comment.