From 20a41e7a079f28d7b6c60960797409c944686237 Mon Sep 17 00:00:00 2001 From: Shawn Melton <11204251+wsmelton@users.noreply.github.com> Date: Wed, 2 Jun 2021 12:57:55 -0500 Subject: [PATCH] Module - implemented [Nullable[datetime]] Handles endpoints that return null for datetime properties --- .../TssSiteSummary.class.ps1 | 2 +- src/classes/groups/TssGroup.class.ps1 | 4 ++-- .../secrets/TssSecretDetailSettings.class.ps1 | 2 +- .../secrets/TssSecretHeartbeatStatus.class.ps1 | 2 +- src/classes/secrets/TssSecretSummary.class.ps1 | 6 +++--- src/classes/users/TssUser.class.ps1 | 14 +++++++------- .../Search-DistributedEngineSite.ps1 | 7 +------ .../secrets/Get-SecretHeartbeatStatus.ps1 | 4 ---- src/functions/secrets/Get-SecretSetting.ps1 | 4 ---- src/functions/secrets/Get-SecretSummary.ps1 | 9 --------- src/functions/secrets/Search-Secret.ps1 | 14 +------------- src/functions/users/Get-User.ps1 | 18 ------------------ src/functions/users/New-User.ps1 | 4 ++-- src/parts/SearchSecrets.ps1 | 14 +------------- 14 files changed, 20 insertions(+), 84 deletions(-) diff --git a/src/classes/distributed-engines/TssSiteSummary.class.ps1 b/src/classes/distributed-engines/TssSiteSummary.class.ps1 index c3dd7b7f..a7c8d6e3 100644 --- a/src/classes/distributed-engines/TssSiteSummary.class.ps1 +++ b/src/classes/distributed-engines/TssSiteSummary.class.ps1 @@ -5,7 +5,7 @@ class TssSiteSummary { [boolean] $IsLocal - [datetime] + [Nullable[datetime]] $LastActivity [int] diff --git a/src/classes/groups/TssGroup.class.ps1 b/src/classes/groups/TssGroup.class.ps1 index 61d56e17..cd27579b 100644 --- a/src/classes/groups/TssGroup.class.ps1 +++ b/src/classes/groups/TssGroup.class.ps1 @@ -5,8 +5,8 @@ class TssGroup { [boolean] $CanEditMembers - [datetime] - $Created = [datetime]::MinValue + [Nullable[datetime]] + $Created [int] $DomainId diff --git a/src/classes/secrets/TssSecretDetailSettings.class.ps1 b/src/classes/secrets/TssSecretDetailSettings.class.ps1 index ff2783c7..b61fee7b 100644 --- a/src/classes/secrets/TssSecretDetailSettings.class.ps1 +++ b/src/classes/secrets/TssSecretDetailSettings.class.ps1 @@ -1,5 +1,5 @@ class TssSecretDetailSettings { - [datetime] + [Nullable[datetime]] $ExpirationDate [int] diff --git a/src/classes/secrets/TssSecretHeartbeatStatus.class.ps1 b/src/classes/secrets/TssSecretHeartbeatStatus.class.ps1 index d1cd1ed9..46be4875 100644 --- a/src/classes/secrets/TssSecretHeartbeatStatus.class.ps1 +++ b/src/classes/secrets/TssSecretHeartbeatStatus.class.ps1 @@ -3,6 +3,6 @@ class TssSecretHeartbeatStatus { [string] $Status - [datetime] + [Nullable[datetime]] $LastHeartbeatCheck } \ No newline at end of file diff --git a/src/classes/secrets/TssSecretSummary.class.ps1 b/src/classes/secrets/TssSecretSummary.class.ps1 index 916c7904..2f433e86 100644 --- a/src/classes/secrets/TssSecretSummary.class.ps1 +++ b/src/classes/secrets/TssSecretSummary.class.ps1 @@ -11,7 +11,7 @@ class TssSecretSummary { [boolean] $CheckOutEnabled - [datetime] + [Nullable[datetime]] $CreateDate [int] @@ -44,14 +44,14 @@ class TssSecretSummary { [boolean] $IsRestricted - [datetime] + [Nullable[datetime]] $LastAccessed [ValidateSet('Failed','Success','Pending','Disabled','UnableToConnect','UnknownError','IncompatibleHost','AccountLockedOut','DnsMismatch','UnableToValidateServerPublicKey','Processing','ArgumentError','AccessDenied')] [string] $LastHeartbeatStatus - [datetime] + [Nullable[datetime]] $LastPasswordChangeAttempt [string] diff --git a/src/classes/users/TssUser.class.ps1 b/src/classes/users/TssUser.class.ps1 index 1b021fa7..cd66be82 100644 --- a/src/classes/users/TssUser.class.ps1 +++ b/src/classes/users/TssUser.class.ps1 @@ -1,11 +1,11 @@ class TssUser { - [datetime] + [Nullable[datetime]] $AdAccountExpires [string] $AdGuid - [datetime] + [Nullable[datetime]] $Created [int] @@ -44,10 +44,10 @@ class TssUser { [boolean] $IsLockedOut - [datetime] + [Nullable[datetime]] $LastLogin - [datetime] + [Nullable[datetime]] $LastSessionActivity [string] @@ -68,7 +68,7 @@ class TssUser { [boolean] $OathVerified - [datetime] + [Nullable[datetime]] $PasswordLastChanged [boolean] @@ -77,7 +77,7 @@ class TssUser { [string] $RadiusUserName - [datetime] + [Nullable[datetime]] $ResetSessionStarted [int] @@ -96,6 +96,6 @@ class TssUser { [string] $Username - [datetime] + [Nullable[datetime]] $VerifyEmailSentDate } \ No newline at end of file diff --git a/src/functions/distributed-engines/Search-DistributedEngineSite.ps1 b/src/functions/distributed-engines/Search-DistributedEngineSite.ps1 index ae8f27a0..581a3d1c 100644 --- a/src/functions/distributed-engines/Search-DistributedEngineSite.ps1 +++ b/src/functions/distributed-engines/Search-DistributedEngineSite.ps1 @@ -102,12 +102,7 @@ function Search-DistributedEngineSite { Write-Warning 'No Distributed Engine Sites found' } if ($restResponse.records) { - foreach ($record in $restResponse.records) { - if (-not $record.lastActivity) { - $record.lastActivity = [datetime]::MinValue - } - [TssSiteSummary]$record - } + [TssSiteSummary[]]$record } } else { Write-Warning 'No valid session found' diff --git a/src/functions/secrets/Get-SecretHeartbeatStatus.ps1 b/src/functions/secrets/Get-SecretHeartbeatStatus.ps1 index 55f536a3..2ea45481 100644 --- a/src/functions/secrets/Get-SecretHeartbeatStatus.ps1 +++ b/src/functions/secrets/Get-SecretHeartbeatStatus.ps1 @@ -59,10 +59,6 @@ function Get-SecretHeartbeatStatus { . $ErrorHandling $err } - if ($null -eq $restResponse.LastHeartbeatCheck) { - $restResponse.lastHeartbeatCheck = [datetime]::MinValue - } - if ($restResponse) { [TssSecretHeartbeatStatus]$restResponse } diff --git a/src/functions/secrets/Get-SecretSetting.ps1 b/src/functions/secrets/Get-SecretSetting.ps1 index 6844f5e2..55c1cdbf 100644 --- a/src/functions/secrets/Get-SecretSetting.ps1 +++ b/src/functions/secrets/Get-SecretSetting.ps1 @@ -59,10 +59,6 @@ function Get-SecretSetting { . $ErrorHandling $err } - if (-not $restResponse.ExpirationDate) { - $restResponse.ExpirationDate = [datetime]::MinValue - } - if ($restResponse) { [TssSecretDetailSettings]$restResponse } diff --git a/src/functions/secrets/Get-SecretSummary.ps1 b/src/functions/secrets/Get-SecretSummary.ps1 index 1072f661..fb601a0e 100644 --- a/src/functions/secrets/Get-SecretSummary.ps1 +++ b/src/functions/secrets/Get-SecretSummary.ps1 @@ -60,15 +60,6 @@ function Get-SecretSummary { } if ($restResponse) { - if (-not $restResponse.lastPasswordChangeAttempt) { - $restResponse.lastPasswordChangeAttempt = [datetime]::MinValue - } - if (-not $restResponse.lastAccessed) { - $restResponse.lastAccessed = [datetime]::MinValue - } - if (-not $restResponse.createDate) { - $restResponse.createDate = [datetime]::MinValue - } [TssSecretSummary]$restResponse } } diff --git a/src/functions/secrets/Search-Secret.ps1 b/src/functions/secrets/Search-Secret.ps1 index ffd90677..a0457da6 100644 --- a/src/functions/secrets/Search-Secret.ps1 +++ b/src/functions/secrets/Search-Secret.ps1 @@ -285,19 +285,7 @@ function Search-Secret { } if ($restResponse.records) { - foreach ($secret in $restResponse.records) { - if (-not $restResponse.lastPasswordChangeAttempt) { - $secret.lastPasswordChangeAttempt = [datetime]::MinValue - } - if (-not $restResponse.lastAccessed) { - $secret.lastAccessed = [datetime]::MinValue - } - if (-not $restResponse.createDate) { - $secret.createDate = [datetime]::MinValue - } - - [TssSecretSummary]$secret - } + [TssSecretSummary[]]$secret } } else { Write-Warning 'No valid session found' diff --git a/src/functions/users/Get-User.ps1 b/src/functions/users/Get-User.ps1 index 8d8d3ece..911dd02c 100644 --- a/src/functions/users/Get-User.ps1 +++ b/src/functions/users/Get-User.ps1 @@ -62,24 +62,6 @@ function Get-User { . $ErrorHandling $err } - if (-not $restResponse.verifyEmailSentDate) { - $restResponse.verifyEmailSentDate = [datetime]::MinValue - } - if (-not $restResponse.passwordLastChanged) { - $restResponse.passwordLastChanged = [datetime]::MinValue - } - if (-not $restResponse.adAccountExpires) { - $restResponse.adAccountExpires = [datetime]::MinValue - } - if (-not $restResponse.resetSessionStarted) { - $restResponse.resetSessionStarted = [datetime]::MinValue - } - if (-not $restResponse.LastSessionActivity) { - $restResponse.LastSessionActivity = [datetime]::MinValue - } - if (-not $restResponse.lastLogin) { - $restResponse.LastLogin = [datetime]::MinValue - } if ($restResponse) { [TssUser]$restResponse } diff --git a/src/functions/users/New-User.ps1 b/src/functions/users/New-User.ps1 index 2c073491..28f5d612 100644 --- a/src/functions/users/New-User.ps1 +++ b/src/functions/users/New-User.ps1 @@ -117,10 +117,10 @@ function New-User { } } - $invokeParams.Body = ($newBody | ConvertTo-Json) + $invokeParams.Body = ($newBody | ConvertTo-Json -Depth 100) Write-Verbose "Performing the operation $($invokeParams.Method) $uri with:`n $newBody" - if (-not $PSCmdlet.ShouldProcess('', "$($invokeParams.Method) $uri with $($invokeParams.Body)")) { return } + if (-not $PSCmdlet.ShouldProcess("User: $Username", "$($invokeParams.Method) $uri with $($invokeParams.Body)")) { return } try { $restResponse = . $InvokeApi @invokeParams } catch { diff --git a/src/parts/SearchSecrets.ps1 b/src/parts/SearchSecrets.ps1 index 2fec5fa0..b5529797 100644 --- a/src/parts/SearchSecrets.ps1 +++ b/src/parts/SearchSecrets.ps1 @@ -44,18 +44,6 @@ process { } if ($restResponse.records) { - foreach ($secret in $restResponse.records) { - if (-not $restResponse.lastPasswordChangeAttempt) { - $secret.lastPasswordChangeAttempt = [datetime]::MinValue - } - if (-not $restResponse.lastAccessed) { - $secret.lastAccessed = [datetime]::MinValue - } - if (-not $restResponse.createDate) { - $secret.createDate = [datetime]::MinValue - } - - [TssSecretSummary]$secret - } + [TssSecretSummary[]]$secret } } \ No newline at end of file