Public/User/Set-UserNewLoginId.ps1
<# .SYNOPSIS Changes a users login id .DESCRIPTION Allows user or an administrator to change user's loginId. Self user or an user with USER.WRITE permission can perform this operation. Once user's loginId is changed all existing tokens of the user will be invalidated. .INPUTS The user resource object .OUTPUTS Nothing .PARAMETER User The user resource object .PARAMETER LoginId The new user login id .LINK https://www.hsdp.io/documentation/identity-and-access-management-iam/api-documents/resource-reference-api/user-api-v2#/User%20Management/post_authorize_identity_User__id___change_loginid .EXAMPLE $user = Get-User -Id "mytestuser1" Set-UserNewLoginId -User $user -LoginId "mytestuser2" .NOTES POST: /authorize/identity/User/{id}/$change-loginid v2 #> function Set-UserNewLoginId { [CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUsernameAndPasswordParams', '', Justification='needed to collect')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '', Justification='needed to collect')] param( [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline)] [ValidateNotNullOrEmpty()] [PSObject]$User, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNullOrEmpty()] [String]$LoginId, [Parameter()] [switch] $Force ) begin { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Function started" if (-not $PSBoundParameters.ContainsKey('Verbose')) { $VerbosePreference = $PSCmdlet.SessionState.PSVariable.GetValue('VerbosePreference') } if (-not $PSBoundParameters.ContainsKey('Confirm')) { $ConfirmPreference = $PSCmdlet.SessionState.PSVariable.GetValue('ConfirmPreference') } if (-not $PSBoundParameters.ContainsKey('WhatIf')) { $WhatIfPreference = $PSCmdlet.SessionState.PSVariable.GetValue('WhatIfPreference') } } process { Write-Debug "[$($MyInvocation.MyCommand.Name)] PSBoundParameters: $($PSBoundParameters | Out-String)" if ($Force -or $PSCmdlet.ShouldProcess("ShouldProcess?")) { $ConfirmPreference = 'None' $Body = @{ loginId = $LoginId; } Invoke-ApiRequest -Path "/authorize/identity/User/$($User.Id)/`$change-loginid" -Version 2 -Method "Post" -Body $Body -ValidStatusCodes @(204) | Out-Null } } end { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Complete" } } |