Skip to content

Commit c3fdef4

Browse files
committed
fix: Improve error handling and logging in Push-UpdatePermissionsQueue and Invoke-ExecUpdateRefreshToken functions
1 parent ee73caa commit c3fdef4

3 files changed

Lines changed: 36 additions & 35 deletions

File tree

Modules/CIPPCore/Public/Entrypoints/Activity Triggers/Push-UpdatePermissionsQueue.ps1

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ function Push-UpdatePermissionsQueue {
3030

3131
# Check for permission failures (excluding service principal creation failures)
3232
$AllResults = @($AppResults) + @($DelegatedResults)
33-
$PermissionFailures = $AllResults | Where-Object {
34-
$_ -like '*Failed*' -and
33+
$PermissionFailures = $AllResults | Where-Object {
34+
$_ -like '*Failed*' -and
3535
$_ -notlike '*Failed to create service principal*'
3636
}
3737

@@ -71,7 +71,8 @@ function Push-UpdatePermissionsQueue {
7171
}
7272
}
7373
} catch {
74-
Write-Information "Error updating permissions for $($Item.displayName)"
75-
Write-LogMessage -tenant $Item.defaultDomainName -tenantId $Item.customerId -message "Error updating permissions for $($Item.displayName) - $($_.Exception.Message)" -Sev 'Error' -API 'UpdatePermissionsQueue'
74+
Write-Information "Error updating permissions for $($Item.displayName): $($_.Exception.Message)"
75+
Write-Information $_.InvocationInfo.PositionMessage
76+
Write-LogMessage -tenant $Item.defaultDomainName -tenantId $Item.customerId -message "Error updating permissions for $($Item.displayName) - $($_.Exception.Message)" -Sev 'Error' -API 'UpdatePermissionsQueue' -LogData (Get-CippException -Exception $_)
7677
}
7778
}

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Setup/Invoke-ExecUpdateRefreshToken.ps1

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,61 +15,58 @@ function Invoke-ExecUpdateRefreshToken {
1515
# Handle refresh token update
1616
#make sure we get the latest authentication:
1717
$auth = Get-CIPPAuthentication
18+
$IsPartnerTenant = $env:TenantID -eq $Request.body.tenantId
19+
1820
if ($env:AzureWebJobsStorage -eq 'UseDevelopmentStorage=true' -or $env:NonLocalHostAzurite -eq 'true') {
1921
$DevSecretsTable = Get-CIPPTable -tablename 'DevSecrets'
2022
$Secret = Get-CIPPAzDataTableEntity @DevSecretsTable -Filter "PartitionKey eq 'Secret' and RowKey eq 'Secret'"
21-
22-
if ($env:TenantID -eq $Request.body.tenantId) {
23+
if ($IsPartnerTenant) {
2324
$Secret | Add-Member -MemberType NoteProperty -Name 'RefreshToken' -Value $Request.body.refreshtoken -Force
24-
# Set environment variable to make it immediately available
2525
Set-Item -Path env:RefreshToken -Value $Request.body.refreshtoken -Force
2626
} else {
27-
Write-Host "$($env:TenantID) does not match $($Request.body.tenantId)"
2827
$name = $Request.body.tenantId -replace '-', '_'
29-
$secret | Add-Member -MemberType NoteProperty -Name $name -Value $Request.body.refreshtoken -Force
30-
# Set environment variable to make it immediately available
28+
$Secret | Add-Member -MemberType NoteProperty -Name $name -Value $Request.body.refreshtoken -Force
3129
Set-Item -Path env:$name -Value $Request.body.refreshtoken -Force
3230
}
3331
Add-CIPPAzDataTableEntity @DevSecretsTable -Entity $Secret -Force
3432
} else {
35-
if ($env:TenantID -eq $Request.body.tenantId) {
33+
if ($IsPartnerTenant) {
3634
Set-CippKeyVaultSecret -VaultName $kv -Name 'RefreshToken' -SecretValue (ConvertTo-SecureString -String $Request.body.refreshtoken -AsPlainText -Force)
37-
# Set environment variable to make it immediately available
3835
Set-Item -Path env:RefreshToken -Value $Request.body.refreshtoken -Force
39-
40-
# Trigger CPV refresh for partner tenant only
41-
try {
42-
$Queue = New-CippQueueEntry -Name 'Update Permissions - Partner Tenant' -TotalTasks 1
43-
$TenantBatch = @([PSCustomObject]@{
44-
defaultDomainName = 'PartnerTenant'
45-
customerId = $env:TenantID
46-
displayName = '*Partner Tenant'
47-
FunctionName = 'UpdatePermissionsQueue'
48-
QueueId = $Queue.RowKey
49-
})
50-
$InputObject = [PSCustomObject]@{
51-
OrchestratorName = 'UpdatePermissionsOrchestrator'
52-
Batch = @($TenantBatch)
53-
}
54-
Start-CIPPOrchestrator -InputObject $InputObject
55-
Write-Information 'Started permissions update orchestrator for Partner Tenant'
56-
} catch {
57-
Write-Warning "Failed to start permissions orchestrator: $($_.Exception.Message)"
58-
}
5936
} else {
60-
Write-Host "$($env:TenantID) does not match $($Request.body.tenantId) - we're adding a new secret for the tenant."
37+
Write-Information "$($env:TenantID) does not match $($Request.body.tenantId) - adding a new secret for the tenant."
6138
$name = $Request.body.tenantId
6239
try {
6340
Set-CippKeyVaultSecret -VaultName $kv -Name $name -SecretValue (ConvertTo-SecureString -String $Request.body.refreshtoken -AsPlainText -Force)
64-
# Set environment variable to make it immediately available
6541
Set-Item -Path env:$name -Value $Request.body.refreshtoken -Force
6642
} catch {
67-
Write-Host "Failed to set secret $name in KeyVault. $($_.Exception.Message)"
43+
Write-Information "Failed to set secret $name in KeyVault. $($_.Exception.Message)"
6844
throw $_
6945
}
7046
}
7147
}
7248

49+
if ($IsPartnerTenant) {
50+
try {
51+
$Queue = New-CippQueueEntry -Name 'Update Permissions - Partner Tenant' -TotalTasks 1
52+
$TenantBatch = @([PSCustomObject]@{
53+
defaultDomainName = 'PartnerTenant'
54+
customerId = $env:TenantID
55+
displayName = '*Partner Tenant'
56+
FunctionName = 'UpdatePermissionsQueue'
57+
QueueId = $Queue.RowKey
58+
})
59+
$InputObject = [PSCustomObject]@{
60+
OrchestratorName = 'UpdatePermissionsOrchestrator'
61+
Batch = @($TenantBatch)
62+
}
63+
Start-CIPPOrchestrator -InputObject $InputObject
64+
Write-Information 'Started permissions update orchestrator for Partner Tenant'
65+
} catch {
66+
Write-Warning "Failed to start permissions orchestrator: $($_.Exception.Message)"
67+
}
68+
}
69+
7370
if ($request.body.tenantId -eq $env:TenantID) {
7471
$TenantName = 'your partner tenant'
7572
} else {

Modules/CIPPCore/Public/New-CIPPDbRequest.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ function New-CIPPDbRequest {
3232

3333
$Tenant = Get-Tenants -TenantFilter $TenantFilter | Select-Object -ExpandProperty defaultDomainName
3434
if (-not $Tenant) {
35+
if ($TenantFilter -eq $env:TenantID) {
36+
return $false
37+
}
3538
throw "Tenant '$TenantFilter' not found"
3639
}
3740
$SafeTenantFilter = ConvertTo-CIPPODataFilterValue -Value $Tenant -Type String

0 commit comments

Comments
 (0)