<# Consomme le token de reinitialisation et pose le mot de passe. Invoke-RestMethod construit le JSON depuis un objet : aucun probleme de guillemets (cmd ne connait pas l'apostrophe) ni de caracteres speciaux (&& est l'operateur d'enchainement de cmd). #> param( [Parameter(Mandatory=$true)][string]$Token, [string]$Password, [string]$BaseUrl = "http://localhost:5000" ) $ErrorActionPreference = "Stop" . "$PSScriptRoot\_common.ps1" if ([string]::IsNullOrWhiteSpace($Password)) { $Password = Read-PlainPassword "Mot de passe a poser (8 car. min)" } if ($Password.Length -lt 8) { throw "Le code exige 8 caracteres minimum." } try { $r = Invoke-RestMethod -Method Post -Uri "$BaseUrl/api/Authentication/set-password" ` -ContentType "application/json" ` -Body (@{ token = $Token; newPassword = $Password } | ConvertTo-Json) Write-Host " $r" -ForegroundColor Green Write-Host " Etape suivante : run.cmd 4-get-jwt.ps1 -Email " -ForegroundColor Cyan } catch { Write-Host " ECHEC : $(Get-HttpErrorBody $_)" -ForegroundColor Red Write-Host " Causes usuelles : token deja consomme, expire (48 h)," -ForegroundColor Yellow Write-Host " ou INSERT non commite dans le client SQL." -ForegroundColor Yellow exit 1 }