Skip to content

Commit

Permalink
Merge pull request #1245 from kris6673/gal
Browse files Browse the repository at this point in the history
Support ExecHideFromGAL with POST and GET requests; add ListGlobalAddressList function
  • Loading branch information
KelvinTegelaar authored Jan 19, 2025
2 parents 9ee4bd7 + aa425b2 commit 8216b06
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,30 @@ Function Invoke-ExecHideFromGAL {
param($Request, $TriggerMetadata)

$APIName = $TriggerMetadata.FunctionName
Write-LogMessage -user $request.headers.'x-ms-client-principal' -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$ExecutingUser = $Request.headers.'x-ms-client-principal'
$APIName = $TriggerMetadata.FunctionName
Write-LogMessage -user $ExecutingUser -API $APINAME -message 'Accessed this API' -Sev 'Debug'


# Support if the request is a POST or a GET. So to support legacy(GET) and new(POST) requests
$UserId = $Request.Query.ID ?? $Request.body.ID
$TenantFilter = $Request.Query.TenantFilter ?? $Request.body.tenantFilter
$Hidden = -not [string]::IsNullOrWhiteSpace($Request.Query.HideFromGAL) ? [System.Convert]::ToBoolean($Request.Query.HideFromGAL) : [System.Convert]::ToBoolean($Request.body.HideFromGAL)


$TenantFilter = $request.query.tenantfilter
Try {
$Hidden = [System.Convert]::ToBoolean($Request.query.HideFromGal)
$HideResults = Set-CIPPHideFromGAL -tenantFilter $tenantFilter -userid $Request.query.ID -HideFromGAL $Hidden -ExecutingUser $request.headers.'x-ms-client-principal' -APIName 'ExecOffboardUser'
$HideResults = Set-CIPPHideFromGAL -tenantFilter $TenantFilter -UserID $UserId -hidefromgal $Hidden -ExecutingUser $ExecutingUser -APIName $APIName
$Results = [pscustomobject]@{'Results' = $HideResults }
$StatusCode = [HttpStatusCode]::OK

} catch {
$Results = [pscustomobject]@{'Results' = "Failed. $($_.Exception.Message)" }
Write-LogMessage -user $request.headers.'x-ms-client-principal' -API $APINAME -tenant $($tenantfilter) -message "Hide/UnHide from GAL failed: $($_.Exception.Message)" -Sev 'Error'
$ErrorMessage = Get-CippException -Exception $_
$Results = [pscustomobject]@{'Results' = "Failed. $($ErrorMessage.NormalizedError)" }
$StatusCode = [HttpStatusCode]::Forbidden
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
StatusCode = $StatusCode
Body = $Results
})

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using namespace System.Net

Function Invoke-ListGlobalAddressList {
<#
.FUNCTIONALITY
Entrypoint
.ROLE
Exchange.Mailbox.Read
#>
[CmdletBinding()]
param($Request, $TriggerMetadata)

$APIName = $TriggerMetadata.FunctionName
$ExecutingUser = $Request.headers.'x-ms-client-principal'
Write-LogMessage -user $ExecutingUser -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$TenantFilter = $Request.Query.tenantFilter

try {
$GAL = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Get-Recipient' -cmdParams @{ResultSize = 'unlimited'; SortBy = 'DisplayName' } `
-Select 'Identity, DisplayName, Alias, PrimarySmtpAddress, ExternalDirectoryObjectId, HiddenFromAddressListsEnabled, EmailAddresses, IsDirSynced, SKUAssigned, RecipientType, RecipientTypeDetails, AddressListMembership' | Select-Object -ExcludeProperty *odata*, *data.type*
$StatusCode = [HttpStatusCode]::OK
} catch {
$ErrorMessage = Get-CippException -Exception $_
$StatusCode = [HttpStatusCode]::Forbidden
$GAL = $ErrorMessage.NormalizedError
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = $StatusCode
Body = @($GAL)
})

}
14 changes: 7 additions & 7 deletions Modules/CIPPCore/Public/Set-CIPPHideFromGAL.ps1
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
function Set-CIPPHideFromGAL {
[CmdletBinding()]
param (
$userid,
$tenantFilter,
$UserId,
$TenantFilter,
$APIName = 'Hide From Address List',
[bool]$HideFromGAL,
$ExecutingUser
)
$Text = if ($HideFromGAL) { 'hidden' } else { 'unhidden' }
try {
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Set-mailbox' -cmdParams @{Identity = $userid ; HiddenFromAddressListsEnabled = $HideFromGAL }
Write-LogMessage -user $ExecutingUser -API $APINAME -tenant $($tenantfilter) -message "$($userid) $Text from GAL" -Sev 'Info'
return "Successfully $Text $($userid) from GAL."
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Set-Mailbox' -cmdParams @{Identity = $UserId ; HiddenFromAddressListsEnabled = $HideFromGAL }
Write-LogMessage -user $ExecutingUser -API $APINAME -tenant $($Tenantfilter) -message "$($UserId) $Text from GAL" -Sev Info
return "Successfully $Text $($UserId) from GAL."
} catch {
$ErrorMessage = Get-CippException -Exception $_
Write-LogMessage -user $ExecutingUser -API $APIName -message "Could not hide $($userid) from address list. Error: $($ErrorMessage.NormalizedError)" -Sev 'Error' -tenant $TenantFilter -LogData $ErrorMessage
return "Could not hide $($userid) from address list. Error: $($ErrorMessage.NormalizedError)"
Write-LogMessage -user $ExecutingUser -API $APIName -message "Could not hide $($UserId) from address list. Error: $($ErrorMessage.NormalizedError)" -Sev 'Error' -tenant $TenantFilter -LogData $ErrorMessage
return "Could not hide $($UserId) from address list. Error: $($ErrorMessage.NormalizedError)"
}
}

0 comments on commit 8216b06

Please sign in to comment.