Private/UDElements/SystemUsers/UDElement-user_userStates.ps1


function UDElement-user_userStates ()
{
    param (
        $refreshInterval,
        $unDrawColor
    )

    New-UDElement -Tag "user_userStates" -Id "user_userStates" -RefreshInterval $refreshInterval -AutoRefresh -Endpoint {

        #SA-796 - User State Info
        $UserStates = @()

        $LockedUsers = Get-JCUser -account_locked $true

        $UserStates += $LockedUsers

        $ExpiredUsers = Get-JCUser -password_expired $true

        $UserStates += $ExpiredUsers

        $SuspendedUsers = Get-JCUser -suspended $true

        $UserStates += $SuspendedUsers

        $Script:UniqueUsers = $UserStates | Sort-Object username -Unique

        if ($UniqueUsers)
        {
            New-UDGrid -Title "User State Information" -Properties @("Username", "Email", "Suspended", "Expired", "Locked") -NoFilter -Endpoint {
                $UniqueUsers | ForEach-Object {
                    [PSCustomObject]@{
                        Username  = (New-UDLink -Text $_.username -Url "https://console.jumpcloud.com/#/users/$($_._id)/details" -OpenInNewWindow);
                        Suspended = $(if ($_.suspended) { New-UDIcon -Icon check } else { "" });
                        Expired   = $(if ($_.password_expired) { New-UDIcon -Icon check } else { "" });
                        Locked    = $(if ($_.account_locked) { New-UDIcon -Icon check } else { "" });
                    }
                } | Out-UDGridData
            } -NoExport
        }
        else
        {

            New-UDCard -Title "User State Information" -Content {
                New-UDunDraw -Name "celebration" -Color $unDrawColor
                New-UDParagraph -Text "None of your users are Suspended, Expired, or Locked Out of their JumpCloud accounts!"
            }
        }
    }
}