
<?php
require_once __DIR__ . '/includes/bootstrap.php';

// Verifica se já existe administrador
$total = (int) $pdo->query("SELECT COUNT(*) FROM admins")->fetchColumn();

if ($total > 0) {
    exit('A configuração inicial já foi realizada. Acesse o login administrativo.');
}

$erro = '';
$sucesso = '';

if (empty($_SESSION['token_admin'])) {
    $_SESSION['token_admin'] = bin2hex(random_bytes(32));
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    if (!hash_equals(
        $_SESSION['token_admin'],
        $_POST['token'] ?? ''
    )) {
        exit('Solicitação inválida.');
    }

    $usuario = trim($_POST['usuario'] ?? '');
    $senha = $_POST['senha'] ?? '';
    $confirmacao = $_POST['confirmacao'] ?? '';

    if (strlen($usuario) < 4) {
        $erro = 'O usuário precisa ter pelo menos 4 caracteres.';
    } elseif (strlen($senha) < 12) {
        $erro = 'A senha precisa ter pelo menos 12 caracteres.';
    } elseif ($senha !== $confirmacao) {
        $erro = 'As senhas não coincidem.';
    } else {

        $hash = password_hash($senha, PASSWORD_DEFAULT);

        try {
            $pdo->beginTransaction();

            $total = (int) $pdo->query(
                "SELECT COUNT(*) FROM admins"
            )->fetchColumn();

            if ($total > 0) {
                throw new RuntimeException('Já existe um administrador.');
            }

            $stmt = $pdo->prepare(
                "INSERT INTO admins (usuario, senha)
                 VALUES (:usuario, :senha)"
            );

            $stmt->execute([
                'usuario' => $usuario,
                'senha' => $hash
            ]);

            $pdo->commit();

            unset($_SESSION['token_admin']);

            $sucesso = 'Administrador criado com sucesso!';

        } catch (Throwable $e) {

            if ($pdo->inTransaction()) {
                $pdo->rollBack();
            }

            $erro = 'Não foi possível criar o administrador. Verifique os dados.';
        }
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Criar administrador - INFOGUARDA</title>
<style>
body {
    font-family: Arial, sans-serif;
    background: #edf1f5;
    margin: 0;
}
.container {
    max-width: 420px;
    margin: 60px auto;
    padding: 25px;
    background: white;
    border-radius: 12px;
    box-shadow: 0 3px 15px #0002;
}
h2 {
    text-align: center;
    color: #102d50;
}
input {
    width: 100%;
    box-sizing: border-box;
    padding: 13px;
    margin: 8px 0 18px;
    border: 1px solid #ccc;
    border-radius: 6px;
}
button {
    width: 100%;
    padding: 14px;
    background: #102d50;
    color: white;
    border: 0;
    border-radius: 6px;
    font-weight: bold;
    cursor: pointer;
}
.erro { color: #b3261e; }
.sucesso { color: #147a38; }
.aviso {
    background: #fff4d6;
    padding: 12px;
    border-radius: 6px;
    font-size: 13px;
}
</style>
</head>
<body>

<div class="container">

<h2>INFOGUARDA</h2>
<p style="text-align:center">CADASTRO DO ADMINISTRADOR</p>

<?php if ($erro): ?>
<p class="erro"><?= limpar($erro) ?></p>
<?php endif; ?>

<?php if ($sucesso): ?>
<p class="sucesso"><?= limpar($sucesso) ?></p>
<p>Agora acesse a página de login.</p>
<?php else: ?>

<p class="aviso">
Crie seu usuário e sua senha administrativa.
Use uma senha forte com pelo menos 12 caracteres.
</p>

<form method="POST">

<input type="hidden" name="token"
value="<?= limpar($_SESSION['token_admin']) ?>">

<label>Nome de usuário</label>
<input type="text" name="usuario"
required minlength="4" autocomplete="username">

<label>Senha</label>
<input type="password" name="senha"
required minlength="12" autocomplete="new-password">

<label>Confirme a senha</label>
<input type="password" name="confirmacao"
required minlength="12" autocomplete="new-password">

<button type="submit">CRIAR ADMINISTRADOR</button>

</form>

<?php endif; ?>

</div>
</body>
</html>
