<?php
session_start();
if(!isset($_SESSION['admin']) || ($_SESSION['rol'] ?? '') !== 'tics'){
    header("Location: login.php");
    exit;
}

if($_SERVER['REQUEST_METHOD'] !== 'POST'){
    header("Location: usuarios.php");
    exit;
}

include("conexion.php");

if(!validar_csrf($_POST['csrf_token'] ?? '')){
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'Token de seguridad inválido.'];
    header("Location: usuarios.php");
    exit;
}

$nombre_completo = sanitizar($_POST['nombre_completo'] ?? '');
$usuario = sanitizar($_POST['usuario'] ?? '');
$password = $_POST['password'] ?? '';
$rol = in_array($_POST['rol'] ?? '', ['admin', 'auxiliar', 'tics']) ? $_POST['rol'] : 'admin';

if(empty($nombre_completo) || empty($usuario) || empty($password)){
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'Complete todos los campos obligatorios.'];
    header("Location: usuarios.php");
    exit;
}

if(strlen($password) < 6){
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'La contraseña debe tener al menos 6 caracteres.'];
    header("Location: usuarios.php");
    exit;
}

// Verificar que el usuario no exista
$check = $conexion->prepare("SELECT id FROM usuarios WHERE usuario = ?");
$check->bind_param("s", $usuario);
$check->execute();
if($check->get_result()->num_rows > 0){
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'El nombre de usuario ya existe.'];
    $check->close();
    header("Location: usuarios.php");
    exit;
}
$check->close();

$password_hash = password_hash($password, PASSWORD_DEFAULT);

$stmt = $conexion->prepare("INSERT INTO usuarios (usuario, nombre_completo, password, rol) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $usuario, $nombre_completo, $password_hash, $rol);

if($stmt->execute()){
    unset($_SESSION['csrf_token']);
    $_SESSION['mensaje'] = ['tipo' => 'exito', 'texto' => 'Usuario "' . $usuario . '" creado correctamente con rol ' . strtoupper($rol) . '.'];
} else {
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'Error al crear el usuario.'];
}

$stmt->close();
header("Location: usuarios.php");
exit;
?>
