Skip to content

Commit f592192

Browse files
Merge pull request KelvinTegelaar#1429 from kris6673/feat-perma-delete-action
Feat: Add permanently delete action
2 parents 2a2c0a3 + 46124ab commit f592192

File tree

2 files changed

+63
-5
lines changed

2 files changed

+63
-5
lines changed

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,27 @@ Function Invoke-ExecRestoreDeleted {
1515
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
1616

1717
# Interact with query parameters or the body of the request.
18-
$TenantFilter = $Request.Query.TenantFilter ?? $Request.Body.TenantFilter
18+
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
1919
$RequestID = $Request.Query.ID ?? $Request.Body.ID
20+
$UserPrincipalName = $Request.Body.userPrincipalName
21+
$DisplayName = $Request.Body.displayName
2022

2123
try {
2224
$null = New-GraphPostRequest -uri "https://graph.microsoft.com/v1.0/directory/deletedItems/$($RequestID)/restore" -tenantid $TenantFilter -type POST -body '{}' -Verbose
23-
$Result = "Successfully restored deleted item with ID: $($RequestID)"
24-
Write-LogMessage -headers $Request.Headers -tenant $TenantFilter -API $APIName -message $Result -Sev 'Info'
25+
$Result = "Successfully restored deleted item with ID: '$($RequestID)'"
26+
if ($UserPrincipalName) { $Result += " User Principal Name: '$($UserPrincipalName)'" }
27+
if ($DisplayName) { $Result += " Display Name: '$($DisplayName)'" }
28+
29+
Write-LogMessage -headers $Headers -tenant $TenantFilter -API $APIName -message $Result -Sev 'Info'
2530
$StatusCode = [HttpStatusCode]::OK
2631
} catch {
2732
$ErrorMessage = Get-CippException -Exception $_
28-
$Result = "Failed to restore deleted item with ID: $($RequestID). Error: $($ErrorMessage.NormalizedError)"
29-
Write-LogMessage -headers $Request.Headers -tenant $TenantFilter -API $APIName -message $Result -Sev 'Error' -LogData $ErrorMessage
33+
$Result = "Failed to restore deleted item with ID: '$($RequestID)'"
34+
if ($UserPrincipalName) { $Result += " User Principal Name: '$($UserPrincipalName)'" }
35+
if ($DisplayName) { $Result += " Display Name: '$($DisplayName)'" }
36+
$Result += " Error: $($ErrorMessage.NormalizedError)"
37+
38+
Write-LogMessage -headers $Headers -tenant $TenantFilter -API $APIName -message $Result -Sev 'Error' -LogData $ErrorMessage
3039
$StatusCode = [HttpStatusCode]::InternalServerError
3140
}
3241

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using namespace System.Net
2+
3+
Function Invoke-RemoveDeletedObject {
4+
<#
5+
.FUNCTIONALITY
6+
Entrypoint
7+
.ROLE
8+
Tenant.Directory.ReadWrite
9+
#>
10+
[CmdletBinding()]
11+
param($Request, $TriggerMetadata)
12+
13+
$APIName = $Request.Params.CIPPEndpoint
14+
$Headers = $Request.Headers
15+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
16+
17+
# Interact with query parameters or the body of the request.
18+
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
19+
$RequestID = $Request.Query.ID ?? $Request.Body.ID
20+
$UserPrincipalName = $Request.Body.userPrincipalName
21+
$DisplayName = $Request.Body.displayName
22+
23+
try {
24+
$null = New-GraphPostRequest -uri "https://graph.microsoft.com/v1.0/directory/deletedItems/$($RequestID)" -tenantid $TenantFilter -type DELETE -body '{}' -Verbose
25+
$Result = "Successfully permanently deleted item with ID: '$($RequestID)'"
26+
if ($UserPrincipalName) { $Result += " User Principal Name: '$($UserPrincipalName)'" }
27+
if ($DisplayName) { $Result += " Display Name: '$($DisplayName)'" }
28+
29+
Write-LogMessage -headers $Headers -tenant $TenantFilter -API $APIName -message $Result -Sev 'Info'
30+
$StatusCode = [HttpStatusCode]::OK
31+
} catch {
32+
$ErrorMessage = Get-CippException -Exception $_
33+
$Result = "Failed to permanently delete item with ID: $($RequestID)"
34+
if ($UserPrincipalName) { $Result += " User Principal Name: '$($UserPrincipalName)'" }
35+
if ($DisplayName) { $Result += " Display Name: '$($DisplayName)'" }
36+
$Result += " Error: $($ErrorMessage.NormalizedError)"
37+
38+
Write-LogMessage -headers $Headers -tenant $TenantFilter -API $APIName -message $Result -Sev 'Error' -LogData $ErrorMessage
39+
$StatusCode = [HttpStatusCode]::InternalServerError
40+
}
41+
42+
$Results = [pscustomobject]@{'Results' = $Result }
43+
# Associate values to output bindings by calling 'Push-OutputBinding'.
44+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
45+
StatusCode = $StatusCode
46+
Body = $Results
47+
})
48+
49+
}

0 commit comments

Comments
 (0)