Skip to content

Commit ce9d7f9

Browse files
Merge pull request KelvinTegelaar#1347 from kris6673/ExecEditCalendarPermissions
Enhance ExecEditCalendarPermissions API endpoint for better error handling and logging
2 parents eecc5d0 + 08d45c5 commit ce9d7f9

File tree

3 files changed

+35
-28
lines changed

3 files changed

+35
-28
lines changed

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Email-Exchange/Administration/Invoke-ExecEditCalendarPermissions.ps1

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,32 @@ Function Invoke-ExecEditCalendarPermissions {
1111
param($Request, $TriggerMetadata)
1212

1313
$APIName = $Request.Params.CIPPEndpoint
14-
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
14+
$Headers = $Request.Headers
15+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
1516

1617
# Extract parameters from query or body
17-
$TenantFilter = if ($Request.query.TenantFilter) { $Request.query.TenantFilter } else { $Request.Body.TenantFilter }
18-
$UserID = if ($Request.query.UserID) { $Request.query.UserID } else { $Request.Body.UserID }
19-
$UserToGetPermissions = if ($Request.query.UserToGetPermissions) { $Request.query.UserToGetPermissions } else { $Request.Body.UserToGetPermissions.value }
20-
$Permissions = if ($Request.query.Permissions) { @($Request.query.Permissions) } else { @($Request.Body.Permissions.value) }
21-
$FolderName = if ($Request.query.FolderName) { $Request.query.FolderName } else { $Request.Body.FolderName }
22-
$RemoveAccess = if ($Request.query.RemoveAccess) { $Request.query.RemoveAccess } else { $Request.Body.RemoveAccess.value }
18+
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
19+
$UserID = $Request.Query.UserID ?? $Request.Body.UserID
20+
$UserToGetPermissions = $Request.Query.UserToGetPermissions ? $Request.Query.UserToGetPermissions ?? $Request.Body.UserToGetPermissions.value
21+
$Permissions = @($Request.Query.Permissions) ?? @($Request.Body.Permissions.value)
22+
$FolderName = $Request.Query.FolderName ?? $Request.Body.FolderName
23+
$RemoveAccess = $Request.Query.RemoveAccess ?? $Request.Body.RemoveAccess.value
2324

2425
try {
2526
if ($RemoveAccess) {
26-
$result = Set-CIPPCalendarPermission -UserID $UserID -FolderName $FolderName -RemoveAccess $RemoveAccess -TenantFilter $TenantFilter
27+
$Result = Set-CIPPCalendarPermission -Headers $Headers -UserID $UserID -FolderName $FolderName -RemoveAccess $RemoveAccess -TenantFilter $TenantFilter
2728
} else {
28-
$result = Set-CIPPCalendarPermission -UserID $UserID -FolderName $FolderName -TenantFilter $TenantFilter -UserToGetPermissions $UserToGetPermissions -Permissions $Permissions
29+
$Result = Set-CIPPCalendarPermission -Headers $Headers -UserID $UserID -FolderName $FolderName -TenantFilter $TenantFilter -UserToGetPermissions $UserToGetPermissions -Permissions $Permissions
2930
}
31+
$StatusCode = [HttpStatusCode]::OK
3032
} catch {
31-
$ErrorMessage = Get-NormalizedError -Message $_.Exception
32-
$Result = $ErrorMessage
33+
$Result = $_.Exception.Message
34+
$StatusCode = [HttpStatusCode]::Forbidden
3335
}
3436

3537
# Associate values to output bindings by calling 'Push-OutputBinding'.
3638
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
37-
StatusCode = [HttpStatusCode]::OK
38-
Body = @{Results = $Result }
39+
StatusCode = $StatusCode
40+
Body = @{Results = $Result}
3941
})
4042
}

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Identity/Administration/Users/Invoke-ExecOffboardUser.ps1

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,45 +9,46 @@ Function Invoke-ExecOffboardUser {
99
#>
1010
[CmdletBinding()]
1111
param($Request, $TriggerMetadata)
12-
$AllUsers = $Request.body.user.value
13-
$Tenantfilter = $request.body.tenantfilter.value
12+
$AllUsers = $Request.Body.user.value
13+
$TenantFilter = $request.Body.tenantFilter.value
1414
$Results = foreach ($username in $AllUsers) {
1515
try {
1616
$APIName = 'ExecOffboardUser'
17-
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
17+
$Headers = $Request.Headers
18+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
1819

19-
if ($Request.body.Scheduled.enabled) {
20+
if ($Request.Body.Scheduled.enabled) {
2021
$taskObject = [PSCustomObject]@{
21-
TenantFilter = $Tenantfilter
22+
TenantFilter = $TenantFilter
2223
Name = "Offboarding: $Username"
2324
Command = @{
2425
value = 'Invoke-CIPPOffboardingJob'
2526
}
2627
Parameters = [pscustomobject]@{
2728
Username = $Username
2829
APIName = 'Scheduled Offboarding'
29-
options = $request.body
30+
options = $Request.Body
3031
RunScheduled = $true
3132
}
32-
ScheduledTime = $Request.body.scheduled.date
33+
ScheduledTime = $Request.Body.scheduled.date
3334
PostExecution = @{
3435
Webhook = [bool]$Request.Body.PostExecution.webhook
3536
Email = [bool]$Request.Body.PostExecution.email
3637
PSA = [bool]$Request.Body.PostExecution.psa
3738
}
3839
}
39-
Add-CIPPScheduledTask -Task $taskObject -hidden $false -Headers $Request.Headers
40+
Add-CIPPScheduledTask -Task $taskObject -hidden $false -Headers $Headers
4041
} else {
41-
Invoke-CIPPOffboardingJob -Username $Username -TenantFilter $Tenantfilter -Options $Request.body -APIName $APIName -Headers $Request.Headers
42+
Invoke-CIPPOffboardingJob -Username $Username -TenantFilter $TenantFilter -Options $Request.Body -APIName $APIName -Headers $Headers
4243
}
4344
$StatusCode = [HttpStatusCode]::OK
4445

4546
} catch {
4647
$StatusCode = [HttpStatusCode]::Forbidden
47-
$body = $_.Exception.message
48+
$_.Exception.message
4849
}
4950
}
50-
$body = [pscustomobject]@{'Results' = @($results) }
51+
$body = [pscustomobject]@{'Results' = @($Results) }
5152
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
5253
StatusCode = $StatusCode
5354
Body = $Body

Modules/CIPPCore/Public/Set-CIPPCalendarPermission.ps1

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
function Set-CIPPCalendarPermission {
22
[CmdletBinding(SupportsShouldProcess = $true)]
33
param(
4+
$APIName = 'Set Calendar Permissions',
5+
$Headers,
46
$RemoveAccess,
57
$TenantFilter,
68
$UserID,
@@ -27,7 +29,7 @@ function Set-CIPPCalendarPermission {
2729
if ($PSCmdlet.ShouldProcess("$UserID\$folderName", "Remove permissions for $LoggingName")) {
2830
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Remove-MailboxFolderPermission' -cmdParams @{Identity = "$($UserID):\$folderName"; User = $RemoveAccess }
2931
$Result = "Successfully removed access for $LoggingName from calendar $($CalParam.Identity)"
30-
Write-LogMessage -API 'CalendarPermissions' -tenant $TenantFilter -message "Successfully removed access for $LoggingName from calendar $($UserID)" -sev Info
32+
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -sev Info
3133
}
3234
} else {
3335
if ($PSCmdlet.ShouldProcess("$UserID\$folderName", "Set permissions for $LoggingName to $Permissions")) {
@@ -36,13 +38,15 @@ function Set-CIPPCalendarPermission {
3638
} catch {
3739
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Add-MailboxFolderPermission' -cmdParams $CalParam -Anchor $UserID
3840
}
39-
Write-LogMessage -API 'CalendarPermissions' -tenant $TenantFilter -message "Calendar permissions added for $LoggingName on $UserID." -sev Info
41+
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message "Successfully set Calendar permissions $Permissions for $LoggingName on $UserID." -sev Info
4042
$Result = "Successfully set permissions on folder $($CalParam.Identity). The user $LoggingName now has $Permissions permissions on this folder."
4143
}
4244
}
4345
} catch {
44-
$ErrorMessage = Get-NormalizedError -Message $_.Exception
45-
$Result = $ErrorMessage
46+
$ErrorMessage = Get-CippException -Message $_
47+
$Result = "Failed to set calendar permissions for $LoggingName on $UserID: $($ErrorMessage.NormalizedError)"
48+
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -sev Error -LogData $ErrorMessage
49+
throw $Result
4650
}
4751

4852
return $Result

0 commit comments

Comments
 (0)