Files
sistema_para_juego/create_admin.php

111 lines
3.3 KiB
PHP
Executable File

<?php
/**
* Script para crear el primer usuario administrador
* Ejecutar una sola vez: php create_admin.php
*/
// Cargar variables de entorno
if (file_exists(__DIR__ . '/.env')) {
$lines = file(__DIR__ . '/.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) continue;
if (strpos($line, '=') === false) continue;
list($key, $value) = explode('=', $line, 2);
$_ENV[trim($key)] = trim($value);
}
}
require_once __DIR__ . '/shared/database/connection.php';
echo "========================================\n";
echo " CREAR USUARIO ADMINISTRADOR\n";
echo "========================================\n\n";
try {
$db = getDB();
// Solicitar datos del usuario
echo "Ingrese el nombre de usuario: ";
$username = trim(fgets(STDIN));
echo "Ingrese el email: ";
$email = trim(fgets(STDIN));
echo "Ingrese la contraseña: ";
$password = trim(fgets(STDIN));
echo "Ingrese el nombre completo: ";
$nombreCompleto = trim(fgets(STDIN));
if (empty($username) || empty($email) || empty($password)) {
die("❌ Error: Todos los campos son obligatorios\n");
}
// Verificar si el usuario ya existe
$stmt = $db->prepare("SELECT id FROM usuarios WHERE username = ? OR email = ?");
$stmt->execute([$username, $email]);
if ($stmt->fetch()) {
die("❌ Error: Ya existe un usuario con ese nombre de usuario o email\n");
}
// Obtener el rol de Admin
$stmt = $db->query("SELECT id FROM roles WHERE nombre = 'Admin' LIMIT 1");
$rol = $stmt->fetch();
if (!$rol) {
die("❌ Error: No se encontró el rol de Admin. Ejecute primero el schema.sql\n");
}
$rolId = $rol['id'];
// Obtener el idioma español por defecto
$stmt = $db->query("SELECT id FROM idiomas WHERE codigo = 'es' LIMIT 1");
$idioma = $stmt->fetch();
$idiomaId = $idioma ? $idioma['id'] : 1;
// Hash de la contraseña
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
// Insertar usuario
$stmt = $db->prepare("
INSERT INTO usuarios (username, email, password, nombre_completo, rol_id, idioma_id, activo)
VALUES (?, ?, ?, ?, ?, ?, 1)
");
$stmt->execute([
$username,
$email,
$passwordHash,
$nombreCompleto,
$rolId,
$idiomaId
]);
$userId = $db->lastInsertId();
// Asignar todos los permisos al admin
$stmt = $db->query("SELECT id FROM permisos");
$permisos = $stmt->fetchAll(PDO::FETCH_COLUMN);
$stmtPermiso = $db->prepare("INSERT INTO usuarios_permisos (usuario_id, permiso_id) VALUES (?, ?)");
foreach ($permisos as $permisoId) {
$stmtPermiso->execute([$userId, $permisoId]);
}
echo "\n========================================\n";
echo "✅ Usuario administrador creado exitosamente\n";
echo "========================================\n\n";
echo "Usuario: $username\n";
echo "Email: $email\n";
echo "Rol: Admin\n";
echo "ID: $userId\n";
echo "\nYa puede iniciar sesión en el sistema.\n\n";
} catch (PDOException $e) {
echo "❌ Error de base de datos: " . $e->getMessage() . "\n";
exit(1);
} catch (Exception $e) {
echo "❌ Error: " . $e->getMessage() . "\n";
exit(1);
}