Files
aggios.app/scripts/reset-superadmin-password.ps1
2025-12-17 13:36:23 -03:00

95 lines
3.3 KiB
PowerShell

# Script para criar senha segura para SUPERADMIN
# Gera senha aleatoria forte e atualiza no banco
Write-Host "Gerando senha segura para SUPERADMIN..." -ForegroundColor Cyan
Write-Host ""
# Gera senha forte (16 caracteres com maiusculas, minusculas, numeros e especiais)
Add-Type -AssemblyName System.Web
$newPassword = [System.Web.Security.Membership]::GeneratePassword(20, 5)
# Garante que tem todos os tipos de caracteres
$newPassword = "Ag@" + $newPassword + "2025!"
Write-Host "Nova senha gerada: $newPassword" -ForegroundColor Green
Write-Host ""
Write-Host "IMPORTANTE: Anote esta senha em local seguro!" -ForegroundColor Yellow
Write-Host ""
# Salva em arquivo criptografado (apenas para emergencia)
$securePasswordFile = "g:\Projetos\aggios-app\backups\.superadmin_password.txt"
$newPassword | Out-File -FilePath $securePasswordFile -Force
Write-Host "Senha salva em: $securePasswordFile" -ForegroundColor Cyan
Write-Host "(Arquivo protegido - acesso restrito)" -ForegroundColor Gray
Write-Host ""
# Gera hash bcrypt usando o backend em execucao
Write-Host "Gerando hash bcrypt..." -ForegroundColor Yellow
# Cria script Go temporario para gerar o hash
$goScript = @"
package main
import (
"fmt"
"golang.org/x/crypto/bcrypt"
)
func main() {
hash, _ := bcrypt.GenerateFromPassword([]byte("$newPassword"), bcrypt.DefaultCost)
fmt.Print(string(hash))
}
"@
# Salva e executa no container
$goScript | Out-File -FilePath "g:\Projetos\aggios-app\backend\temp_hash.go" -Encoding UTF8 -Force
# Copia para o container builder e gera o hash
$hash = docker run --rm -v "g:\Projetos\aggios-app\backend:/app" -w /app golang:1.23-alpine sh -c "go run temp_hash.go"
if ($LASTEXITCODE -eq 0) {
Write-Host "Hash gerado com sucesso!" -ForegroundColor Green
# Cria SQL file para atualizar
$sqlContent = @"
DELETE FROM users WHERE email = 'admin@aggios.app';
INSERT INTO users (id, email, password_hash, first_name, last_name, role, is_active, created_at, updated_at)
VALUES (
gen_random_uuid(),
'admin@aggios.app',
'$hash',
'Super',
'Admin',
'SUPERADMIN',
true,
NOW(),
NOW()
);
SELECT 'Usuario criado com sucesso!' as status;
"@
$sqlFile = "g:\Projetos\aggios-app\backups\.update_superadmin.sql"
$sqlContent | Out-File -FilePath $sqlFile -Encoding UTF8 -Force
# Executa no banco
docker cp $sqlFile aggios-postgres:/tmp/update_admin.sql
docker exec aggios-postgres psql -U aggios aggios_db -f /tmp/update_admin.sql
# Remove arquivo temporario
Remove-Item "g:\Projetos\aggios-app\backend\temp_hash.go" -Force -ErrorAction SilentlyContinue
Remove-Item $sqlFile -Force -ErrorAction SilentlyContinue
Write-Host ""
Write-Host "========================================" -ForegroundColor Green
Write-Host " SENHA ATUALIZADA COM SUCESSO!" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
Write-Host ""
Write-Host "Credenciais do SUPERADMIN:" -ForegroundColor Cyan
Write-Host "Email: admin@aggios.app" -ForegroundColor White
Write-Host "Senha: $newPassword" -ForegroundColor White
Write-Host ""
Write-Host "ANOTE ESTA SENHA EM LOCAL SEGURO!" -ForegroundColor Yellow
Write-Host ""
} else {
Write-Host "Erro ao gerar hash!" -ForegroundColor Red
exit 1
}