Skip to content

Commit 348b5bd

Browse files
authored
Merge pull request KelvinTegelaar#1341 from kris6673/exchange-actions
Fix: Invoke-ExecHideFromGAL parameter and Exchange user actions support
2 parents a76d865 + 6c9be42 commit 348b5bd

File tree

4 files changed

+69
-56
lines changed

4 files changed

+69
-56
lines changed

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ Function Invoke-ExecHideFromGAL {
1010
[CmdletBinding()]
1111
param($Request, $TriggerMetadata)
1212

13-
$Headers = $Request.Headers
1413
$APIName = $Request.Params.CIPPEndpoint
14+
$Headers = $Request.Headers
1515
Write-LogMessage -Headers $Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
1616

1717

@@ -22,19 +22,17 @@ Function Invoke-ExecHideFromGAL {
2222
$HideFromGAL = [System.Convert]::ToBoolean($HideFromGAL)
2323

2424
Try {
25-
$HideResults = Set-CIPPHideFromGAL -tenantFilter $TenantFilter -UserID $UserId -hidefromgal $Hidden -Headers $Request.Headers -APIName $APIName
26-
$Results = [pscustomobject]@{'Results' = $HideResults }
25+
$Result = Set-CIPPHideFromGAL -tenantFilter $TenantFilter -UserID $UserId -hidefromgal $HideFromGAL -Headers $Headers -APIName $APIName
2726
$StatusCode = [HttpStatusCode]::OK
2827

2928
} catch {
30-
$ErrorMessage = Get-CippException -Exception $_
31-
$Results = [pscustomobject]@{'Results' = "Failed. $($ErrorMessage.NormalizedError)" }
29+
$Result = $_.Exception.Message
3230
$StatusCode = [HttpStatusCode]::Forbidden
3331
}
3432
# Associate values to output bindings by calling 'Push-OutputBinding'.
3533
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
3634
StatusCode = $StatusCode
37-
Body = $Results
35+
Body = @{ 'Results' = $Result }
3836
})
3937

4038
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ Function Invoke-ListMailboxes {
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
# Interact with query parameters or the body of the request.
17-
$TenantFilter = $Request.Query.TenantFilter
18+
$TenantFilter = $Request.Query.tenantFilter
1819
try {
1920
$Select = 'id,ExchangeGuid,ArchiveGuid,UserPrincipalName,DisplayName,PrimarySMTPAddress,RecipientType,RecipientTypeDetails,EmailAddresses,WhenSoftDeleted,IsInactiveMailbox,ForwardingSmtpAddress,DeliverToMailboxAndForward,ForwardingAddress,HiddenFromAddressListsEnabled,ExternalDirectoryObjectId,MessageCopyForSendOnBehalfEnabled,MessageCopyForSentAsEnabled'
2021
$ExoRequest = @{
@@ -32,6 +33,7 @@ Function Invoke-ListMailboxes {
3233
@{Parameter = 'PublicFolder'; Type = 'Bool' }
3334
@{Parameter = 'RecipientTypeDetails'; Type = 'String' }
3435
@{Parameter = 'SoftDeletedMailbox'; Type = 'Bool' }
36+
@{Parameter = 'Identity'; Type = 'String' }
3537
)
3638

3739
foreach ($Param in $Request.Query.PSObject.Properties.Name) {
Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
1-
function Invoke-ExecDismissRiskyUser {
2-
<#
3-
.FUNCTIONALITY
4-
Entrypoint
5-
.ROLE
6-
Identity.User.ReadWrite
7-
#>
8-
[CmdletBinding()]
9-
param($Request, $TriggerMetadata)
10-
11-
$APIName = $Request.Params.CIPPEndpoint
12-
$Headers = $Request.Headers
13-
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
14-
15-
# Interact with the query or body of the request
16-
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
17-
$SuspectUser = $Request.Query.userId ?? $Request.Body.userId
18-
$userDisplayName = $Request.Query.userDisplayName ?? $Request.Body.userDisplayName
19-
20-
$GraphRequest = @{
21-
'uri' = 'https://graph.microsoft.com/beta/riskyUsers/dismiss'
22-
'tenantid' = $TenantFilter
23-
'type' = 'POST'
24-
'contentType' = 'application/json; charset=utf-8'
25-
'body' = @{
26-
'userIds' = @($SuspectUser)
27-
} | ConvertTo-Json
28-
}
29-
30-
try {
31-
$GraphResults = New-GraphPostRequest @GraphRequest
32-
Write-LogMessage -API $APIName -tenant $TenantFilter -message "Dismissed user risk for $userDisplayName" -sev 'Info'
33-
$Result = "Successfully dismissed User Risk for user $userDisplayName. $GraphResults"
34-
$StatusCode = [HttpStatusCode]::OK
35-
} catch {
36-
$ErrorMessage = Get-CippException -Exception $_
37-
$Result = "Failed to dismiss user risk for $userDisplayName. $($ErrorMessage.NormalizedError)"
38-
Write-LogMessage -API $APIName -tenant $TenantFilter -message $Result -sev 'Error' -LogData $ErrorMessage
39-
$StatusCode = [HttpStatusCode]::InternalServerError
40-
}
41-
42-
# Associate values to output bindings by calling 'Push-OutputBinding'.
43-
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
44-
StatusCode = $StatusCode
45-
Body = @{ 'Results' = $Result }
46-
})
47-
}
1+
function Invoke-ExecDismissRiskyUser {
2+
<#
3+
.FUNCTIONALITY
4+
Entrypoint
5+
.ROLE
6+
Identity.User.ReadWrite
7+
#>
8+
[CmdletBinding()]
9+
param($Request, $TriggerMetadata)
10+
11+
$APIName = $Request.Params.CIPPEndpoint
12+
$Headers = $Request.Headers
13+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
14+
15+
# Interact with the query or body of the request
16+
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
17+
$SuspectUser = $Request.Query.userId ?? $Request.Body.userId
18+
$userDisplayName = $Request.Query.userDisplayName ?? $Request.Body.userDisplayName
19+
20+
$GraphRequest = @{
21+
'uri' = 'https://graph.microsoft.com/beta/riskyUsers/dismiss'
22+
'tenantid' = $TenantFilter
23+
'type' = 'POST'
24+
'contentType' = 'application/json; charset=utf-8'
25+
'body' = @{
26+
'userIds' = @($SuspectUser)
27+
} | ConvertTo-Json
28+
}
29+
30+
try {
31+
$GraphResults = New-GraphPostRequest @GraphRequest
32+
Write-LogMessage -API $APIName -tenant $TenantFilter -message "Dismissed user risk for $userDisplayName" -sev 'Info'
33+
$Result = "Successfully dismissed User Risk for user $userDisplayName. $GraphResults"
34+
$StatusCode = [HttpStatusCode]::OK
35+
} catch {
36+
$ErrorMessage = Get-CippException -Exception $_
37+
$Result = "Failed to dismiss user risk for $userDisplayName. $($ErrorMessage.NormalizedError)"
38+
Write-LogMessage -API $APIName -tenant $TenantFilter -message $Result -sev 'Error' -LogData $ErrorMessage
39+
$StatusCode = [HttpStatusCode]::InternalServerError
40+
}
41+
42+
# Associate values to output bindings by calling 'Push-OutputBinding'.
43+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
44+
StatusCode = $StatusCode
45+
Body = @{ 'Results' = $Result }
46+
})
47+
}

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,20 @@ Function Invoke-ListUserMailboxDetails {
183183
AutoExpandingArchive = $AutoExpandingArchiveEnabled
184184
RecipientTypeDetails = $MailboxDetailedRequest.RecipientTypeDetails
185185
Mailbox = $MailboxDetailedRequest
186-
}
186+
MailboxActionsData = ($MailboxDetailedRequest | Select-Object id, ExchangeGuid, ArchiveGuid, WhenSoftDeleted, @{ Name = 'UPN'; Expression = { $_.'UserPrincipalName' } },
187+
@{ Name = 'displayName'; Expression = { $_.'DisplayName' } },
188+
@{ Name = 'primarySmtpAddress'; Expression = { $_.'PrimarySMTPAddress' } },
189+
@{ Name = 'recipientType'; Expression = { $_.'RecipientType' } },
190+
@{ Name = 'recipientTypeDetails'; Expression = { $_.'RecipientTypeDetails' } },
191+
@{ Name = 'AdditionalEmailAddresses'; Expression = { ($_.'EmailAddresses' | Where-Object { $_ -clike 'smtp:*' }).Replace('smtp:', '') -join ', ' } },
192+
@{Name = 'ForwardingSmtpAddress'; Expression = { $_.'ForwardingSmtpAddress' -replace 'smtp:', '' } },
193+
@{Name = 'InternalForwardingAddress'; Expression = { $_.'ForwardingAddress' } },
194+
DeliverToMailboxAndForward,
195+
HiddenFromAddressListsEnabled,
196+
ExternalDirectoryObjectId,
197+
MessageCopyForSendOnBehalfEnabled,
198+
MessageCopyForSentAsEnabled)
199+
} # Select statement taken from ListMailboxes to save a EXO request
187200

188201
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
189202
StatusCode = [HttpStatusCode]::OK

0 commit comments

Comments
 (0)