JustPaste.it

page

$PageName = "User Info"

New-UDPage -Name $("$PageName") -Url "/Test" -Role @("Administrator") -Content {
    $Session:LogSourceName = "User-Info.ps1"
    $Session:Username = $User
    if ($TempUsername = $ClaimsPrincipal.Claims | Where-Object { $_.Type -eq "samAccountName" } | Select-Object -First 1) {
        $Session:Username = $TempUsername.Value
    }
    $ADProperties = @("C"
        "CO"
        "CanonicalName"
        "CountryCode"
        "Distinguishedname"
        "EmployeeID"
        "Enabled"
        "Givenname"
        "LastLogonDate"
        "LockOutTime"
        "MemberOf"
        "MobilePhone"
        "PasswordLastSet"
        "PasswordNeverExpires"
        "Surname"
        "accountExpires"
        "company"
        "department"
        "directReports"
        "mail"
        "manager"
        "msDS-UserPasswordExpiryTimeComputed"
        "physicalDeliveryOfficeName"
        "proxyAddresses"
        "sAMAccountName"
        "streetAddress"
        "telephoneNumber"
        "title"
        "userPrincipalName"
        "userworkstations")
    $Session:ADObject = $null
    if ($UserName) {
        $Session:ADObject = Get-ADUser -LDAPFilter "(&(objectClass=user)(sAMAccountName=$($UserName)))" -Properties $ADProperties
        if (-not $Session:ADObject) {
            Show-UDToast -Message "$($UserName ) not found" -CloseOnClick -Duration 15000 -Icon exclamation -IconColor Red
        }
    }
    $GeneralColumns = @(
        New-UDTableColumn -Property Name -Title " " 
        New-UDTableColumn -Property Status -Title " " -Render { $EventData.Status }
        New-UDTableColumn -Property Value -Title " " -Render { $EventData.Value }
    )
    $ADColumns = @(
        New-UDTableColumn -Property Name -Title " " 
        New-UDTableColumn -Property Status -Title " " -Render { $EventData.Status }
        New-UDTableColumn -Property Value -Title " " -Render { $EventData.Value }
    )
    $AzureColumns = @(
        New-UDTableColumn -Property Name -Title " "  -Render { $EventData.Name }
        New-UDTableColumn -Property Status -Title " " -Render { $EventData.Status }
        New-UDTableColumn -Property Value -Title " " -Render { $EventData.Value }
    )
    $MailColumns = @(
        New-UDTableColumn -Property Name -Title " " 
        New-UDTableColumn -Property Status -Title " " -Render { $EventData.Status }
        New-UDTableColumn -Property Value -Title " " -Render { $EventData.Value }
    )
    
    $MultipleObjectsColumns = @(
        New-UDTableColumn -Property Select -Title " " -ShowSort $false -Render { 
            New-UDButton -Id "User-Info_Dynamic_Button_$($EventData.sAMAccountName)" -Text "Select" -Size small -OnClick { 
                $Session:ADObject = $Session:ADObject | Where-Object { $_.sAMAccountName -eq $EventData.sAMAccountName }
                Sync-UDElement -Id "User-Info_Multiple_Dynamic"
            } -ShowLoading
        }
        New-UDTableColumn -Property sAMAccountName -Title "sAMAccountName" -DefaultSortColumn
        New-UDTableColumn -Property Givenname -Title "Givenname"
        New-UDTableColumn -Property Surname -Title "Surname"
        New-UDTableColumn -Property mail -Title "Mail"
    )
    New-UDGrid -Container -Content {
        New-UDGrid -Item -ExtraSmallSize 12 -Content {
            New-UDElement -Id "User-Info_Search" -Tag "div" -Content {
                New-UDTextbox -Id "User-Info_Search_Textbox" -Label "Username" -AutoFocus #-OnEnter { Invoke-UDEndpoint -Id "User-Info_Search_Button" -Session }
                New-UDButton -Text "Search" -Id "User-Info_Search_Button" -OnClick {
                    $Value = (Get-UDElement -Id "User-Info_Search_Textbox").value 
                    if ( $Value.length -lt 3) {
                        Show-UDToast -Message "$( $Value) is too short. It needs to be atleast 3 chars." -CloseOnClick -Duration 15000 -Icon exclamation -IconColor Red
                    }
                    else {
                        $Session:ADObject = Get-ADUser -LDAPFilter "(&(objectClass=user)(|(sAMAccountName=$($Value)*)(userPrincipalName=$($Value)*)(giveName=$($Value)*)(sn=$($Value)*)(displayname=$($Value)*)(cn=$($Value)*)))" -Properties $ADProperties
                        $Session:ADObject | convertto-json | Out-File "C:\temp\User$(Get-Random 100000000).json" 
                        Sync-UDElement -Id "User-Info_Multiple_Dynamic"
                        Sync-UDElement -Id "User-Info_General_Dynamic"
                        Sync-UDElement -Id "User-Info_AD_Dynamic"
                        Sync-UDElement -Id "User-Info_Azure_Dynamic"
                        Sync-UDElement -Id "User-Info_Mail_Dynamic"
                        if (-not $Session:ADObject) {
                            Show-UDToast -Message "$($Value ) not found" -CloseOnClick -Duration 15000 -Icon exclamation -IconColor Red
                        }
                    }
                } -ShowLoading
            }
            Invoke-UDJavaScript -JavaScript 'document.addEventListener("keyup", function(event) {
                if (event.keyCode === 13) {
                    event.preventDefault();
                    document.getElementById("User-Info_Search_Button").click();
                }
            });'
        }
        #New-UDDynamic -Id "User-Info_Dynamic" -Content {
        #if ($Session:ADObject) {
        New-UDGrid -Item -ExtraSmallSize 2 -Content {}
        New-UDGrid -Item -ExtraSmallSize 8 -Content {
            New-UDDynamic -Id "User-Info_Multiple_Dynamic" -Content {
                if (($Session:ADObject | Measure-Object).count -gt 1) { 
                    New-UDTable -Id "User-Info_Dynamic_General_Card_Table" -Data $Session:ADObject -Dense -Columns $MultipleObjectsColumns -PageSize $Session:ADObject.Length
                }
                else {
                    #Sync-UDElement -Id "User-Info_General_Dynamic"
                }
            } -LoadingComponent {
                New-UDElement -Id "User-Info_Dynamic_Progress" -Tag "div" -Content {
                    New-UDProgress -Circular
                }
            }
        }
        New-UDGrid -Item -ExtraSmallSize 6 -Content {
            New-UDDynamic -Id "User-Info_General_Dynamic" -Content {
                if (($Session:ADObject | Measure-Object).count -eq 1) {
                    $GeneralData = Get-UserGeneral -ADUser $Session:ADObject
                    $GeneralHeader = New-UDCardHeader -Title "General"
                    $GeneralBody = New-UDCardBody -Content {
                        New-UDTable -Id "User-Info_Dynamic_General_Card_Table" -Data $GeneralData -Dense -Columns $GeneralColumns -PageSize $GeneralData.Length
                    }
                    New-UDCard -Id "User-Info_Dynamic_General_Card" -Header $GeneralHeader -Body $GeneralBody -Footer $GeneralData.Footer
                    #Sync-UDElement -Id "User-Info_AD_Dynamic"
                }
            } -LoadingComponent {
                New-UDElement -Id "User-Info_Dynamic_Progress" -Tag "div" -Content {
                    New-UDProgress -Circular
                }
            }
        }
        New-UDGrid -Item -ExtraSmallSize 6 -Content {
            New-UDDynamic -Id "User-Info_AD_Dynamic" -Content {
                if (($Session:ADObject | Measure-Object).count -eq 1) {
                    $ADData = Get-UserAD -ADUser $Session:ADObject
                    $ADHeader = New-UDCardHeader -Title "Active Directory"
                    $ADBody = New-UDCardBody -Content {
                        New-UDTable -Data $ADData -Dense -Columns $ADColumns -PageSize $ADData.Length
                    }
                    New-UDCard -Id "User-Info_AD_Card" -Header $ADHeader -Body $ADBody -Footer $ADData.Footer
                    #Sync-UDElement -Id "User-Info_Azure_Dynamic"
                }
            } -LoadingComponent {
                New-UDElement -Id "User-Info_Dynamic_Progress" -Tag "div" -Content {
                    New-UDProgress -Circular
                }
            }
        }
        New-UDGrid -Item -ExtraSmallSize 6 -Content {
            New-UDDynamic -Id "User-Info_Azure_Dynamic" -Content {
                if (($Session:ADObject | Measure-Object).count -eq 1) {
                    $AzureData = Get-UserAzure -ADUser $Session:ADObject
                    $AzureHeader = New-UDCardHeader -Title "Azure/Cloud"
                    $AzureBody = New-UDCardBody -Content {
                        New-UDTable -Data $AzureData -Dense -Columns $AzureColumns -PageSize $AzureData.Length
                    }
                    New-UDCard -Id "User-Info_Azure_Card" -Header $AzureHeader -Body $AzureBody -Footer $AzureData.Footer
                    #Sync-UDElement -Id "User-Info_Mail_Dynamic"
                }
            } -LoadingComponent {
                New-UDElement -Id "User-Info_Dynamic_Progress" -Tag "div" -Content {
                    New-UDProgress -Circular
                }
            }
        }
        New-UDGrid -Item -ExtraSmallSize 6 -Content {
            New-UDDynamic -Id "User-Info_Mail_Dynamic" -Content {
                if (($Session:ADObject | Measure-Object).count -eq 1) {
                    $MailData = Get-UserMail -ADUser $Session:ADObject
                    $MailHeader = New-UDCardHeader -Title "Mail"
                    $MailBody = New-UDCardBody -Content {
                        New-UDTable -Data $MailData -Dense -Columns $MailColumns -PageSize $MailData.Length
                    }
                    #New-UDCard -Id "User-Info_Mail_Card" -Header $MailHeader -Body $MailBody -Footer $MailData.Footer
                }
            } -LoadingComponent {
                New-UDElement -Id "User-Info_Dynamic_Progress" -Tag "div" -Content {
                    New-UDProgress -Circular
                }
            }           
        }
    }