Skip to content

Commit f3ff2ba

Browse files
committed
Refactor Invoke-AddSharedMailbox function to enhance tenant ID handling and improve error logging
1 parent 215c05d commit f3ff2ba

1 file changed

Lines changed: 18 additions & 15 deletions

File tree

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

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ Function Invoke-AddSharedMailbox {
1515

1616
Write-LogMessage -user $User -API $APINAME -message 'Accessed this API' -Sev 'Debug'
1717

18+
# Write to the Azure Functions log stream.
19+
Write-Host 'PowerShell HTTP trigger function processed a request.'
20+
1821
$Results = [System.Collections.ArrayList]@()
1922
$MailboxObject = $Request.body
23+
$Tenant = $MailboxObject.tenantid
2024
$Aliases = $MailboxObject.addedAliases -Split '\n'
2125

22-
# Write to the Azure Functions log stream.
23-
Write-Host 'PowerShell HTTP trigger function processed a request.'
2426
try {
2527

2628
$Email = "$($MailboxObject.username)@$($MailboxObject.domain)"
@@ -30,17 +32,18 @@ Function Invoke-AddSharedMailbox {
3032
'primarySMTPAddress' = $Email
3133
Shared = $true
3234
}
33-
$AddSharedRequest = New-ExoRequest -tenantid $MailboxObject.tenantid -cmdlet 'New-Mailbox' -cmdparams $BodyToShip
35+
$AddSharedRequest = New-ExoRequest -tenantid $Tenant -cmdlet 'New-Mailbox' -cmdparams $BodyToShip
3436
$Body = $Results.add("Successfully created shared mailbox: $Email.")
35-
Write-LogMessage -user $User -API $APINAME -tenant $($MailboxObject.tenantid) -message "Created shared mailbox $($MailboxObject.displayname) with email $Email" -Sev 'Info'
37+
Write-LogMessage -user $User -API $APINAME -tenant $Tenant -message "Created shared mailbox $($MailboxObject.displayname) with email $Email" -Sev 'Info'
3638

3739
# Block sign-in for the mailbox
3840
try {
39-
$null = Set-CIPPSignInState -userid $AddSharedRequest.ExternalDirectoryObjectId -TenantFilter $($MailboxObject.tenantid) -APIName $APINAME -ExecutingUser $User -AccountEnabled $false
41+
$null = Set-CIPPSignInState -userid $AddSharedRequest.ExternalDirectoryObjectId -TenantFilter $Tenant -APIName $APINAME -ExecutingUser $User -AccountEnabled $false
4042
$Body = $Results.add("Blocked sign-in for shared mailbox $Email")
4143
} catch {
42-
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
43-
$Body = $Results.add("Failed to block sign-in for shared mailbox $Email. Error: $ErrorMessage")
44+
$ErrorMessage = Get-CippException -Exception $_
45+
Write-LogMessage -user $User -API $APINAME -tenant $Tenant -message "Failed to block sign-in for shared mailbox $Email. Error: $($ErrorMessage.NormalizedError)" -Sev 'Error' -LogData $ErrorMessage
46+
$Body = $Results.add("Failed to block sign-in for shared mailbox $Email. Error: $($ErrorMessage.NormalizedError)")
4447
}
4548

4649
# Add aliases to the mailbox if any are provided
@@ -51,21 +54,21 @@ Function Invoke-AddSharedMailbox {
5154
'Identity' = $AddSharedRequest.Guid
5255
'EmailAddresses' = @{'@odata.type' = '#Exchange.GenericHashTable'; Add = $Aliases }
5356
}
54-
$null = New-ExoRequest -tenantid $MailboxObject.tenantid -cmdlet 'Set-Mailbox' -cmdparams $AliasBodyToShip -UseSystemMailbox $true
55-
Write-LogMessage -user $User -API $APINAME -tenant $($MailboxObject.tenantid) -message "Added aliases to $Email : $($Aliases -join ',')" -Sev 'Info'
57+
$null = New-ExoRequest -tenantid $Tenant -cmdlet 'Set-Mailbox' -cmdparams $AliasBodyToShip -UseSystemMailbox $true
58+
Write-LogMessage -user $User -API $APINAME -tenant $Tenant -message "Added aliases to $Email : $($Aliases -join ',')" -Sev 'Info'
5659
$Body = $results.add("Added Aliases to $Email : $($Aliases -join ',')")
5760

5861
} catch {
59-
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
60-
Write-LogMessage -user $User -API $APINAME -tenant $($MailboxObject.tenantid) -message "Failed to add aliases to $Email : $ErrorMessage" -Sev 'Error'
61-
$Body = $results.add("ERROR: Failed to add aliases to $Email : $ErrorMessage")
62+
$ErrorMessage = Get-CippException -Exception $_
63+
Write-LogMessage -user $User -API $APINAME -tenant $Tenant -message "Failed to add aliases to $Email : $($ErrorMessage.NormalizedError)" -Sev 'Error' -LogData $ErrorMessage
64+
$Body = $results.add("ERROR: Failed to add aliases to $Email : $($ErrorMessage.NormalizedError)")
6265
}
6366
}
6467
$StatusCode = [HttpStatusCode]::OK
6568
} catch {
66-
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
67-
Write-LogMessage -user $User -API $APINAME -tenant $($MailboxObject.tenantid) -message "Failed to create shared mailbox. Error: $ErrorMessage" -Sev 'Error'
68-
$Body = $Results.add("Failed to create Shared Mailbox. $ErrorMessage")
69+
$ErrorMessage = Get-CippException -Exception $_
70+
Write-LogMessage -user $User -API $APINAME -tenant $Tenant -message "Failed to create shared mailbox. Error: $($ErrorMessage.NormalizedError)" -Sev 'Error' -LogData $ErrorMessage
71+
$Body = $Results.add("Failed to create Shared Mailbox. $($ErrorMessage.NormalizedError)")
6972
$StatusCode = [HttpStatusCode]::Forbidden
7073
}
7174

0 commit comments

Comments
 (0)