@@ -13,70 +13,9 @@ function Invoke-ExecPermissionRepair {
1313 param ($Request , $TriggerMetadata )
1414
1515 try {
16- $Table = Get-CippTable - tablename ' AppPermissions'
1716 $User = [System.Text.Encoding ]::UTF8.GetString([System.Convert ]::FromBase64String($Request.Headers .' x-ms-client-principal' )) | ConvertFrom-Json
18-
19- $CurrentPermissions = Get-CippSamPermissions
20- if (($CurrentPermissions.MissingPermissions | Measure-Object ).Count -gt 0 ) {
21- Write-Information ' Missing permissions found'
22- $MissingPermissions = $CurrentPermissions.MissingPermissions
23- $Permissions = $CurrentPermissions.Permissions
24-
25- $AppIds = @ ($Permissions.PSObject.Properties.Name + $MissingPermissions.PSObject.Properties.Name )
26-
27- $NewPermissions = @ {}
28- foreach ($AppId in $AppIds ) {
29- if (! $AppId ) { continue }
30- $ApplicationPermissions = [system.collections.generic.list [object ]]::new()
31- $DelegatedPermissions = [system.collections.generic.list [object ]]::new()
32-
33- # App permissions
34- foreach ($Permission in $Permissions .$AppId.applicationPermissions ) {
35- $ApplicationPermissions.Add ($Permission )
36- }
37- if (($MissingPermissions .$AppId.applicationPermissions | Measure-Object ).Count -gt 0 ) {
38- foreach ($MissingPermission in $MissingPermissions .$AppId.applicationPermissions ) {
39- Write-Host " Adding missing permission: $MissingPermission "
40- $ApplicationPermissions.Add ($MissingPermission )
41- }
42- }
43-
44- # Delegated permissions
45- foreach ($Permission in $Permissions .$AppId.delegatedPermissions ) {
46- $DelegatedPermissions.Add ($Permission )
47- }
48- if (($MissingPermissions .$AppId.delegatedPermissions | Measure-Object ).Count -gt 0 ) {
49- foreach ($MissingPermission in $MissingPermissions .$AppId.delegatedPermissions ) {
50- Write-Host " Adding missing permission: $MissingPermission "
51- $DelegatedPermissions.Add ($MissingPermission )
52- }
53- }
54- # New permission object
55- $NewPermissions .$AppId = @ {
56- applicationPermissions = @ ($ApplicationPermissions | Sort-Object - Property label)
57- delegatedPermissions = @ ($DelegatedPermissions | Sort-Object - Property label)
58- }
59- }
60-
61-
62- $Entity = @ {
63- ' PartitionKey' = ' CIPP-SAM'
64- ' RowKey' = ' CIPP-SAM'
65- ' Permissions' = [string ]([PSCustomObject ]$NewPermissions | ConvertTo-Json - Depth 10 - Compress)
66- ' UpdatedBy' = $User.UserDetails ?? ' CIPP-API'
67- }
68- $Table = Get-CIPPTable - TableName ' AppPermissions'
69- $null = Add-CIPPAzDataTableEntity @Table - Entity $Entity - Force
70-
71- $Body = @ {
72- ' Results' = ' Permissions Updated'
73- }
74- Write-LogMessage - headers $Request.Headers - API ' ExecPermissionRepair' - message ' CIPP-SAM Permissions Updated' - Sev ' Info' - LogData $Permissions
75- } else {
76- $Body = @ {
77- ' Results' = ' No permissions to update'
78- }
79- }
17+ $Result = Update-CippSamPermissions - UpdatedBy ($User.UserDetails ?? ' CIPP-API' )
18+ $Body = @ {' Results' = $Result }
8019 } catch {
8120 $Body = @ {
8221 ' Results' = " $ ( $_.Exception.Message ) - at line $ ( $_.InvocationInfo.ScriptLineNumber ) "
0 commit comments