New-GitLabUser.ps1
function New-GitLabUser { <# .SYNOPSIS Creates a new user. Note only administrators can create new users. .DESCRIPTION The New-GitlabUser function a new user. Note only administrators can create new users. returns new user when -PassThru is specified .EXAMPLE New-GitLabUser -Email 'John.Johnson@contoso.com' -Password 'randompassword' -UserName 'john.johnson' -Name 'John Johnson' --------------------------------------------------------------- Creates a useraccount for john johnson with appropriate parameters .EXAMPLE NNew-GitLabUser -Email 'John.Johnson@contoso.com' -Password 'randompassword' -UserName 'john.johnson' -Name 'John Johnson' -PassThru --------------------------------------------------------------- Creates a useraccount for john johnson with appropriate parameters returns the newly created user .EXAMPLE New-GitLabProject -Name 'GitLab-API' -container_registry_enabled $true --------------------------------------------------------------- Creates a new project named 'Gitlab-API' with container Registry enabled. #> [CmdletBinding()] [Alias()] [OutputType()] Param ( #Email of the new user [Parameter(HelpMessage = 'new users email', Mandatory = $true)] [ValidateScript({ if($_ -match "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])$") { $true } else { Throw "$_ is not a valid email address" } })] [string]$Email, #Password of the new user [Parameter(HelpMessage = 'new users password', Mandatory = $true)] [ValidatePattern('(?# Error: Password Must Contain at least 8 characters).{8,}')] [ValidateScript({ if($_ -match "^.{8,}$") { $true } else { Throw 'Password Must Contain at least 8 characters' } })] [string]$Password, #Username of the new user [Parameter(HelpMessage = 'new users username', Mandatory = $true)] [string]$UserName, #Name of the new user [Parameter(HelpMessage = 'new users name', Mandatory = $true)] [string]$Name, #Skype ID of the new user [Parameter(HelpMessage = 'new users Skype ID', Mandatory = $false)] [string]$Skype, #LinkedIn of the new user [Parameter(HelpMessage = 'new users LinkedIn ID', Mandatory = $false)] [string]$LinkedIn, #Twitter Accountof the new user [Parameter(HelpMessage = 'new users Twitter Account', Mandatory = $false)] [string]$Twitter, #Website URL of the new user [Parameter(HelpMessage = 'new users Website URL', Mandatory = $false)] [string]$WebsiteURL, #Organisation of the new user [Parameter(HelpMessage = 'new users Organisation', Mandatory = $false)] [string]$Organization, #Number of projects user can create [Parameter(HelpMessage = 'Number of projects user can create', Mandatory = $false)] [int]$ProjectsLimit, #External UID of the new user [Parameter(HelpMessage = 'new users External UID', Mandatory = $false)] [string]$ExternUID, #external providers name of the new user [Parameter(HelpMessage = 'new users external provider name', Mandatory = $false)] [string]$Provider, #User's biography [Parameter(HelpMessage = "User's biography", Mandatory = $false)] [string]$Bio, #Location of the new user [Parameter(HelpMessage = 'new users Location', Mandatory = $false)] [String]$Location, #User is admin [Parameter(HelpMessage = 'User is admin', Mandatory = $false)] [Boolean]$Admin, #User can create groups [Parameter(HelpMessage = 'can create groups', Mandatory = $false)] [Boolean]$CanCreateGroup, #Require confirmation [Parameter(HelpMessage = 'Require confirmation', Mandatory = $false)] [Boolean]$Confirm, #Flags the user as external [Parameter(HelpMessage = 'Flags the user as external', Mandatory = $false)] [Boolean]$External, # Existing GitlabConnector Object, can be retrieved with Get-GitlabConnect [Parameter(HelpMessage = 'Specify Existing GitlabConnector', Mandatory = $false, DontShow = $true)] [psobject]$GitlabConnect = (Get-GitLabConnect), # Passthru the created project [Parameter(HelpMessage = 'Passthru the created project', Mandatory = $false)] [switch]$PassThru ) $httpmethod = 'post' $apiurl = 'users' $parameters = @{} #email (required) - Email $parameters.email = $Email #password (required) - Password $parameters.password = $Password #username (required) - Username $parameters.username = $UserName #name (required) - Name $parameters.name = $Name #skype (optional) - Skype ID if($Skype) { $parameters.'skype' = $Skype } #linkedin (optional) - LinkedIn if($LinkedIn) { $parameters.'linkedin' = $LinkedIn } #twitter (optional) - Twitter account if($Twitter) { $parameters.'twitter' = $Twitter } #website_url (optional) - Website URL if($WebsiteURL) { $parameters.'website_url' = $WebsiteURL } #organization (optional) - Organization name if($Organization) { $parameters.'organisation' = $Organization } #projects_limit (optional) - Number of projects user can create if($ProjectsLimit) { $parameters.'projects_limit' = $ProjectsLimit } #extern_uid (optional) - External UID if($ExternUID) { $parameters.'extern_uid' = $ExternUID } #provider (optional) - External provider name if($Provider) { $parameters.'provider' = $Provider } #bio (optional) - User's biography if($Bio) { $parameters.'bio' = $Bio } #location (optional) - User's location if($Location) { $parameters.'location' = $Location } #admin (optional) - User is admin if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'Admin') { if($Admin) { $parameters.admin = 'true' } else { $parameters.admin = 'false' } } #can_create_group (optional) - User can create groups if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'CanCreateGroup') { if($CanCreateGroup) { $parameters.'can_create_group' = 'true' } else { $parameters.'can_create_group' = 'false' } } #confirm (optional) - Require confirmation if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'Confirm') { if($Confirm) { $parameters.'confirm' = 'true' } else { $parameters.'confirm' = 'false' } } #external (optional) - Flags the user as external if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'External') { if($External) { $parameters.'external' = 'true' } else { $parameters.'external' = 'false' } } $newusr = $GitlabConnect.callapi($apiurl,$httpmethod,$parameters) if($PassThru) { return $newusr } } |