functions/CouchDBauthentication.ps1

# Authentication functions of CouchDB module

function Set-CouchDBSession () {
    <#
    .SYNOPSIS
    Set cookie authentication.
    .DESCRIPTION
    Set cookie authentication. This create the global variable CouchDBCredential.
    .PARAMETER UserId
    The CouchDB user_id.
    .PARAMETER Password
    The password of user_id in SecureString.
    .EXAMPLE
    $password = "password" | ConvertTo-SecureString -AsPlainText -Force
    Set-CouchDBSession -UserId admin -Password $password
    This example manually set the web session on CouchDB server.
    .LINK
    https://pscouchdb.readthedocs.io/en/latest/auth.html
    #>

    param(
        [Parameter(mandatory = $true, Position = 0)]
        [string] $UserId,
        [Parameter(mandatory = $true, Position = 1)]
        [SecureString] $Password
    )
    [PSCredential]$credOject = New-Object System.Management.Automation.PSCredential ($UserId, $Password)
    $Global:CouchDBCredential = $credOject
    return $Global:CouchDBCredential
}

function Get-CouchDBSession () {
    <#
    .SYNOPSIS
    Get cookie authentication.
    .DESCRIPTION
    Get the global variable CouchDBCredential.
    .PARAMETER Clear
    The CouchDB authorization form.
    .EXAMPLE
    Get-CouchDBSession
    This example get the web session on CouchDB server.
    .LINK
    https://pscouchdb.readthedocs.io/en/latest/auth.html
    #>

    param(
        [switch] $Clear
    )
    if ($Clear.IsPresent) {
        if ($Global:CouchDBCredential -is [pscredential]) {
            return "$($Global:CouchDBCredential.UserName):$($Global:CouchDBCredential.GetNetworkCredential().Password)"
        } else {
            return $Global:CouchDBCredential
        }
    } else {
        return $Global:CouchDBCredential
    }
}

function Remove-CouchDBSession () {
    <#
    .SYNOPSIS
    Remove current cookie authentication.
    .DESCRIPTION
    Remove cookie authentication for current session.
    .EXAMPLE
    Remove-CouchDBSession
    The example remove current session.
    .LINK
    https://pscouchdb.readthedocs.io/en/latest/auth.html
    #>

    Remove-Variable CouchDBCredential -Scope global -ErrorAction SilentlyContinue
}