Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Standardize variable naming and improve error handling in API functions #1320

Open
wants to merge 5 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ Function Invoke-ListExtensionSync {
param($Request, $TriggerMetadata)

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

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$ScheduledTasksTable = Get-CIPPTable -TableName 'ScheduledTasks'
$ScheduledTasks = Get-CIPPAzDataTableEntity @ScheduledTasksTable -Filter 'Hidden eq true' | Where-Object { $_.Command -match 'CippExtension' }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ function Invoke-ListCustomRole {
[CmdletBinding()]
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

$Table = Get-CippTable -tablename 'CustomRoles'

$Body = Get-CIPPAzDataTableEntity @Table
Expand Down
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that the issue was more pertaining to who the user with permissions was than the owner mailbox

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I read it the other way around, sorry. Want me to revert it?

Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,20 @@ Function Invoke-ListCalendarPermissions {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$UserID = $request.Query.UserID
$Tenantfilter = $request.Query.tenantfilter
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

$UserID = $Request.Query.UserID
$TenantFilter = $Request.Query.tenantFilter

try {
$GetCalParam = @{Identity = $UserID; FolderScope = 'Calendar' }
$CalendarFolder = New-ExoRequest -tenantid $Tenantfilter -cmdlet 'Get-MailboxFolderStatistics' -anchor $UserID -cmdParams $GetCalParam | Select-Object -First 1
$CalendarFolder = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Get-MailboxFolderStatistics' -anchor $UserID -cmdParams $GetCalParam | Select-Object -First 1 -ExcludeProperty *data.type*
$CalParam = @{Identity = "$($UserID):\$($CalendarFolder.name)" }
$GraphRequest = New-ExoRequest -tenantid $Tenantfilter -cmdlet 'Get-MailboxFolderPermission' -anchor $UserID -cmdParams $CalParam -UseSystemMailbox $true | Select-Object Identity, User, AccessRights, FolderName
Write-LogMessage -API 'List Calendar Permissions' -tenant $tenantfilter -message "Calendar permissions listed for $($tenantfilter)" -sev Debug
$GraphRequest = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Get-MailboxFolderPermission' -anchor $UserID -cmdParams $CalParam -UseSystemMailbox $true | Select-Object Identity, User, AccessRights, FolderName
$GraphRequest | Add-Member -MemberType NoteProperty -Name 'UserID' -Value $UserID
$GraphRequest | Add-Member -MemberType NoteProperty -Name 'ExchangeGUID' -Value $CalendarFolder.ContentMailboxGuid
Write-LogMessage -API $APIName -tenant $TenantFilter -message "Calendar permissions listed for $($TenantFilter)" -sev Debug
$StatusCode = [HttpStatusCode]::OK
} catch {
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Function Invoke-ListConnectionFilterTemplates {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
$Table = Get-CippTable -tablename 'templates'

#List new policies
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
function Invoke-ListExoRequest {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

try {
$AllowedVerbs = @(
'Get'
Expand All @@ -12,6 +16,7 @@ function Invoke-ListExoRequest {
$Verb = ($Cmdlet -split '-')[0]

$AllowedTenants = Test-CIPPAccess -Request $Request -TenantList

$TenantFilter = $Request.Body.TenantFilter
$Tenants = Get-Tenants -IncludeErrors
$Tenant = $Tenants | Where-Object { $_.defaultDomainName -eq $TenantFilter -or $_.customerId -eq $TenantFilter }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ Function Invoke-ListApplicationQueue {
param($Request, $TriggerMetadata)

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


# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$Table = Get-CippTable -tablename 'apps'
$QueuedApps = (Get-CIPPAzDataTableEntity @Table)

Expand All @@ -24,7 +23,7 @@ Function Invoke-ListApplicationQueue {
$ApplicationFile = $QueueFile.JSON | ConvertFrom-Json -Depth 10
[PSCustomObject]@{
tenantName = $ApplicationFile.tenant
applicationName = $ApplicationFile.Applicationname
applicationName = $ApplicationFile.applicationName
cmdLine = $ApplicationFile.IntuneBody.installCommandLine
assignTo = $ApplicationFile.assignTo
id = $($QueueFile.RowKey)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Function Invoke-ListAppsRepository {
param($Request, $TriggerMetadata)

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

$Search = $Request.Body.Search
$Repository = $Request.Body.Repository
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,31 @@ Function Invoke-RemoveApp {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
$User = $Request.Headers
Write-LogMessage -Headers $User -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$Headers = $Request.Headers
Write-LogMessage -Headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

# Interact with query parameters or the body of the request.
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
$policyId = $Request.Query.ID ?? $Request.Body.ID

if (!$policyId) { exit }
try {
#$unAssignRequest = New-GraphPostRequest -uri "https://graph.microsoft.com/beta/deviceManagement/configurationPolicies('$($policyId)')/assign" -type POST -Body '{"assignments":[]}' -tenant $TenantFilter
$null = New-GraphPostRequest -uri "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$($policyId)" -type DELETE -tenant $TenantFilter
$Result = "Successfully deleted app with $policyId"
Write-LogMessage -Headers $User -API $APINAME -message $Result -Sev 'Info' -tenant $TenantFilter
Write-LogMessage -Headers $Headers -API $APIName -message $Result -Sev Info -tenant $TenantFilter
$StatusCode = [HttpStatusCode]::OK
} catch {
$ErrorMessage = Get-CippException -Exception $_
$Result = "Could not delete app with $policyId. Error: $($ErrorMessage.NormalizedError)"
Write-LogMessage -Headers $User -API $APINAME -message $Result -Sev 'Error' -tenant $TenantFilter -LogData $ErrorMessage

$Result = "Failed to delete app with $policyId. Error: $($ErrorMessage.NormalizedError)"
Write-LogMessage -Headers $Headers -API $APIName -message $Result -Sev Error -tenant $TenantFilter -LogData $ErrorMessage
$StatusCode = [HttpStatusCode]::InternalServerError
}

$Body = [pscustomobject]@{Results = "$Result" }
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $Body
StatusCode = $StatusCode
Body = @{'Results' = "$Result" }
})


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ Function Invoke-ListAlertsQueue {
param($Request, $TriggerMetadata)

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


# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$WebhookTable = Get-CIPPTable -TableName 'WebhookRules'
$WebhookRules = Get-CIPPAzDataTableEntity @WebhookTable

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,48 @@ function Invoke-ListAuditLogSearches {
#>
Param($Request, $TriggerMetadata)

if ($Request.Query.TenantFilter) {
switch ($Request.Query.Type) {

$APIName = $Request.Params.CIPPEndpoint
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

# Interact with the query parameters
$TenantFilter = $Request.Query.tenantFilter
$SearchId = $Request.Query.SearchId
$Days = $Request.Query.Days
$Type = $Request.Query.Type


if ($TenantFilter) {
switch ($Type) {
'Searches' {
$Results = Get-CippAuditLogSearches -TenantFilter $Request.Query.TenantFilter
$Results = Get-CippAuditLogSearches -TenantFilter $TenantFilter
$Body = @{
Results = @($Results)
Metadata = @{
TenantFilter = $Request.Query.TenantFilter
TenantFilter = $TenantFilter
TotalSearches = $Results.Count
}
} | ConvertTo-Json -Depth 10 -Compress
}
'SearchResults' {
try {
$Results = Get-CippAuditLogSearchResults -TenantFilter $Request.Query.TenantFilter -QueryId $Request.Query.SearchId
$Results = Get-CippAuditLogSearchResults -TenantFilter $TenantFilter -QueryId $SearchId
} catch {
$Results = @{ Error = $_.Exception.Message }
}
$Body = @{
Results = @($Results)
Metadata = @{
SearchId = $Request.Query.SearchId
TenantFilter = $Request.Query.TenantFilter
SearchId = $SearchId
TenantFilter = $TenantFilter
TotalResults = $Results.Count
}
} | ConvertTo-Json -Depth 10 -Compress
}
default {
if ($Request.Query.Days) {
$Days = $Request.Query.Days
if ($Days) {
$Days = $Days
} else {
$Days = 1
}
Expand All @@ -62,7 +74,7 @@ function Invoke-ListAuditLogSearches {
Results = @($Results)
Metadata = @{
StartTime = $StartTime
TenantFilter = $Request.Query.TenantFilter
TenantFilter = $TenantFilter
}
} | ConvertTo-Json -Depth 10 -Compress
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ function Invoke-ListGDAPAccessAssignments {
[CmdletBinding()]
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

$Id = $Request.Query.Id
$TenantFilter = $env:TenantID

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ Function Invoke-ListGenericTestFunction {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$graphRequest = ($request.headers.'x-ms-original-url').split('/api') | Select-Object -First 1
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
$graphRequest = ($Headers.'x-ms-original-url').split('/api') | Select-Object -First 1

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