11function Invoke-ExecPermissionRepair {
22 <#
33 . SYNOPSIS
4- Reconciles the CIPP-SAM permissions and re-applies them to the partner service principal .
4+ This endpoint will update the CIPP-SAM app permissions .
55 . DESCRIPTION
6- Reconciles the saved additional-permission set (Update-CippSamPermissions), then refreshes the
7- grants on the CIPP-SAM service principal in the PARTNER tenant so the current effective set
8- (manifest + extras) is consented. This never writes the app registration's requiredResourceAccess;
9- permissions are applied as service-principal grants, the same way the routine refresh does.
10- Client tenants pick up the same effective set through their own permission refresh.
6+ Merges new permissions from the SAM manifest into the AppPermissions entry for CIPP-SAM.
117 . FUNCTIONALITY
128 Entrypoint
139 . ROLE
@@ -18,19 +14,8 @@ function Invoke-ExecPermissionRepair {
1814
1915 try {
2016 $User = [System.Text.Encoding ]::UTF8.GetString([System.Convert ]::FromBase64String($Request.Headers .' x-ms-client-principal' )) | ConvertFrom-Json
21- $UpdatedBy = $User.UserDetails ?? ' CIPP-API'
22-
23- # 1) Reconcile the saved extras table (no app-registration write).
24- $TableResult = Update-CippSamPermissions - UpdatedBy $UpdatedBy
25-
26- # 2) Refresh the grants on the partner CIPP-SAM service principal so the effective set
27- # (manifest + extras, read from the table) is actually consented on the SP.
28- $AppResults = Add-CIPPApplicationPermission - RequiredResourceAccess ' CIPPDefaults' - ApplicationId $env: ApplicationID - TenantFilter $env: TenantID
29- $DelegatedResults = Add-CIPPDelegatedPermission - RequiredResourceAccess ' CIPPDefaults' - ApplicationId $env: ApplicationID - TenantFilter $env: TenantID
30-
31- $Results = @ ($TableResult ) + @ ($AppResults ) + @ ($DelegatedResults ) | Where-Object { $_ }
32- Write-LogMessage - Headers $Request.Headers - API ' ExecPermissionRepair' - message " CIPP-SAM permissions repaired by $UpdatedBy " - Sev ' Info' - LogData @ { Results = @ ($Results ) }
33- $Body = @ {' Results' = ($Results -join [Environment ]::NewLine) }
17+ $Result = Update-CippSamPermissions - UpdatedBy ($User.UserDetails ?? ' CIPP-API' )
18+ $Body = @ {' Results' = $Result }
3419 } catch {
3520 $Body = @ {
3621 ' Results' = " $ ( $_.Exception.Message ) - at line $ ( $_.InvocationInfo.ScriptLineNumber ) "
0 commit comments