622 lines
21 KiB
PHP
622 lines
21 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../helpers/session.php';
|
|
require_once __DIR__ . '/../../config/database.php';
|
|
require_once __DIR__ . '/../helpers/crypto.php';
|
|
|
|
function index()
|
|
{
|
|
// Asegúrate de tener conexión
|
|
$conn = getConnection();
|
|
|
|
// CORRIGIDO: Cambiar id_usuario por usuario_id (consistente con login.php)
|
|
if (!isset($_SESSION['usuario_id']) || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
die("Usuario no autenticado.");
|
|
}
|
|
|
|
$id_usuario = $_SESSION['usuario_id']; // CORRIGIDO
|
|
|
|
// Obtener correos
|
|
$correos = obtenerCorreos($conn, $id_usuario);
|
|
|
|
// Cargar vista y pasar datos
|
|
include __DIR__ . '/../../views/seguridad/dashboard_seguridad.php';
|
|
}
|
|
|
|
function opciones()
|
|
{
|
|
$conn = getConnection();
|
|
|
|
$id_usuario = $_SESSION['usuario_id'] ?? null;
|
|
|
|
// Asegúrate de que el usuario está autenticado
|
|
if (!$id_usuario) {
|
|
die("Usuario no autenticado.");
|
|
}
|
|
|
|
// Obtener correos
|
|
$correos = obtenerCorreos($conn, $id_usuario);
|
|
|
|
include __DIR__ . '/../../views/seguridad/agregar.php';
|
|
}
|
|
|
|
// Función para obtener el estado actual (para mostrar en la vista)
|
|
function obtenerEstadoDosFactores()
|
|
{
|
|
$conn = getConnection();
|
|
|
|
// CORRIGIDO: Cambiar id_usuario por usuario_id
|
|
$id_usuario = $_SESSION['usuario_id'] ?? null;
|
|
if (!$id_usuario) {
|
|
return 0; // valor por defecto si no hay sesión
|
|
}
|
|
|
|
$sql_dos_factores = "SELECT dos_factores FROM usuarios_sistema WHERE id_usuario = ?";
|
|
$params = [$id_usuario];
|
|
$stmt_dos_factores = sqlsrv_prepare($conn, $sql_dos_factores, $params);
|
|
|
|
$dos_factores_estado = 0; // valor por defecto
|
|
if ($stmt_dos_factores && sqlsrv_execute($stmt_dos_factores)) {
|
|
if ($row = sqlsrv_fetch_array($stmt_dos_factores, SQLSRV_FETCH_ASSOC)) {
|
|
$dos_factores_estado = (int)$row['dos_factores'];
|
|
}
|
|
}
|
|
|
|
sqlsrv_free_stmt($stmt_dos_factores);
|
|
sqlsrv_close($conn);
|
|
|
|
return $dos_factores_estado;
|
|
}
|
|
|
|
// Función para actualizar el estado (cuando se envía el formulario)
|
|
function autenticacionDosFactores()
|
|
{
|
|
// Solo ejecutar si es una petición POST
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
|
|
// CORRIGIDO: Cambiar id_usuario por usuario_id
|
|
$id_usuario = $_SESSION['usuario_id'] ?? null;
|
|
if (!$id_usuario) {
|
|
die("No autorizado - Sesión inválida");
|
|
}
|
|
|
|
// CORRIGIDO: Verificar también que no esté pendiente de confirmación
|
|
if ($_SESSION['pendiente_confirmacion'] ?? false) {
|
|
die("No autorizado - Confirmación pendiente");
|
|
}
|
|
|
|
$dos_factores = isset($_POST['dos_factores']) ? 1 : 0;
|
|
$sql = "UPDATE usuarios_sistema SET dos_factores = ? WHERE id_usuario = ?";
|
|
$params = [$dos_factores, $id_usuario];
|
|
$stmt = sqlsrv_prepare($conn, $sql, $params);
|
|
|
|
if (!$stmt) {
|
|
die("Error en la preparación: " . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$result = sqlsrv_execute($stmt);
|
|
|
|
if ($result === false) {
|
|
die("Error al actualizar: " . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
sqlsrv_free_stmt($stmt);
|
|
sqlsrv_close($conn);
|
|
|
|
// MEJORADO: Agregar mensaje de éxito
|
|
$_SESSION['config_success'] = $dos_factores ?
|
|
'Autenticación de dos factores activada correctamente.' :
|
|
'Autenticación de dos factores desactivada correctamente.';
|
|
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
}
|
|
|
|
function correoExtra()
|
|
{
|
|
// CORRIGIDO: Cambiar id_usuario por usuario_id y verificar confirmación
|
|
if (!isset($_SESSION['usuario_id']) || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
echo "Error: no se ha iniciado sesión o sesión incompleta.";
|
|
exit;
|
|
}
|
|
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
$conn = getConnection();
|
|
|
|
$sql_check = "SELECT COUNT(*) AS total FROM correo_extra WHERE id_usuario = ?";
|
|
$stmt_check = sqlsrv_query($conn, $sql_check, [$id_usuario]);
|
|
$row = sqlsrv_fetch_array($stmt_check, SQLSRV_FETCH_ASSOC);
|
|
|
|
if ($row['total'] > 0) {
|
|
echo "Ya tienes un correo adicional registrado.";
|
|
return;
|
|
}
|
|
|
|
$correo = $_POST['email-extra'] ?? '';
|
|
|
|
if (!filter_var($correo, FILTER_VALIDATE_EMAIL)) {
|
|
echo "Correo inválido.";
|
|
return;
|
|
}
|
|
|
|
$query = "INSERT INTO correo_extra (id_usuario, correo) VALUES (?, ?)";
|
|
$stmt = sqlsrv_prepare($conn, $query, [$id_usuario, $correo]);
|
|
|
|
if ($stmt && sqlsrv_execute($stmt)) {
|
|
$_SESSION['config_success'] = 'Correo adicional registrado correctamente.';
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
} else {
|
|
echo "Error al registrar el correo extra.";
|
|
}
|
|
}
|
|
|
|
function modificarCorreoExtra()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
echo "Error: no se ha iniciado sesión o sesión incompleta.";
|
|
exit;
|
|
}
|
|
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
$conn = getConnection();
|
|
|
|
$correo = $_POST['email-extra'] ?? '';
|
|
|
|
if (!filter_var($correo, FILTER_VALIDATE_EMAIL)) {
|
|
echo "Correo inválido.";
|
|
return;
|
|
}
|
|
|
|
$query = "UPDATE correo_extra SET correo = ? WHERE id_usuario = ?";
|
|
$stmt = sqlsrv_prepare($conn, $query, [$correo, $id_usuario]);
|
|
|
|
if ($stmt && sqlsrv_execute($stmt)) {
|
|
$_SESSION['config_success'] = 'Correo adicional actualizado correctamente.';
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
} else {
|
|
echo "Error al actualizar el correo extra.";
|
|
}
|
|
}
|
|
|
|
function eliminarCorreoExtra()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
echo "Error: no se ha iniciado sesión o sesión incompleta.";
|
|
exit;
|
|
}
|
|
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
$conn = getConnection();
|
|
|
|
$query = "DELETE FROM correo_extra WHERE id_usuario = ?";
|
|
$stmt = sqlsrv_prepare($conn, $query, [$id_usuario]);
|
|
|
|
if ($stmt && sqlsrv_execute($stmt)) {
|
|
$_SESSION['config_success'] = 'Correo adicional eliminado correctamente.';
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
} else {
|
|
echo "Error al eliminar el correo adicional.";
|
|
}
|
|
}
|
|
|
|
function correoRespaldo()
|
|
{
|
|
// CORRIGIDO: Cambiar id_usuario por usuario_id y verificar confirmación
|
|
if (!isset($_SESSION['usuario_id']) || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
echo "Error: no se ha iniciado sesión o sesión incompleta.";
|
|
exit;
|
|
}
|
|
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
$conn = getConnection();
|
|
|
|
$sql_check = "SELECT COUNT(*) AS total FROM correo_respaldo WHERE id_usuario = ?";
|
|
$stmt_check = sqlsrv_query($conn, $sql_check, [$id_usuario]);
|
|
$row = sqlsrv_fetch_array($stmt_check, SQLSRV_FETCH_ASSOC);
|
|
|
|
if ($row['total'] > 0) {
|
|
echo "Ya tienes un correo de respaldo registrado.";
|
|
return;
|
|
}
|
|
|
|
$correo = $_POST['email-respaldo'] ?? '';
|
|
|
|
if (!filter_var($correo, FILTER_VALIDATE_EMAIL)) {
|
|
echo "Correo inválido.";
|
|
return;
|
|
}
|
|
|
|
$query = "INSERT INTO correo_respaldo (id_usuario, correo) VALUES (?, ?)";
|
|
$stmt = sqlsrv_prepare($conn, $query, [$id_usuario, $correo]);
|
|
|
|
if ($stmt && sqlsrv_execute($stmt)) {
|
|
$_SESSION['config_success'] = 'Correo de respaldo registrado correctamente.';
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
} else {
|
|
echo "Error al registrar el correo de respaldo.";
|
|
}
|
|
}
|
|
|
|
function modificarCorreoRespaldo()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
echo "Error: no se ha iniciado sesión o sesión incompleta.";
|
|
exit;
|
|
}
|
|
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
$conn = getConnection();
|
|
|
|
$correo = $_POST['email-respaldo'] ?? '';
|
|
|
|
if (!filter_var($correo, FILTER_VALIDATE_EMAIL)) {
|
|
echo "Correo inválido.";
|
|
return;
|
|
}
|
|
|
|
$query = "UPDATE correo_respaldo SET correo = ? WHERE id_usuario = ?";
|
|
$stmt = sqlsrv_prepare($conn, $query, [$correo, $id_usuario]);
|
|
|
|
if ($stmt && sqlsrv_execute($stmt)) {
|
|
$_SESSION['config_success'] = 'Correo de respaldo actualizado correctamente.';
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
} else {
|
|
echo "Error al actualizar el correo de respaldo.";
|
|
}
|
|
}
|
|
|
|
function eliminarCorreoRespaldo()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
echo "Error: no se ha iniciado sesión o sesión incompleta.";
|
|
exit;
|
|
}
|
|
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
$conn = getConnection();
|
|
|
|
$query = "DELETE FROM correo_respaldo WHERE id_usuario = ?";
|
|
$stmt = sqlsrv_prepare($conn, $query, [$id_usuario]);
|
|
|
|
if ($stmt && sqlsrv_execute($stmt)) {
|
|
$_SESSION['config_success'] = 'Correo de respaldo eliminado correctamente.';
|
|
header('Location: /IMPORTADORES/seguridad/index');
|
|
exit;
|
|
} else {
|
|
echo "Error al eliminar el correo de respaldo.";
|
|
}
|
|
}
|
|
|
|
function obtenerCorreos($conn, $id_usuario)
|
|
{
|
|
$correos = [
|
|
'dos_factores' => 0,
|
|
'correo_extra' => '',
|
|
'correo_respaldo' => ''
|
|
];
|
|
|
|
// Obtener estado dos_factores
|
|
$sql_dos_factores = "SELECT dos_factores FROM usuarios_sistema WHERE id_usuario = ?";
|
|
$params = [$id_usuario];
|
|
$stmt_dos_factores = sqlsrv_prepare($conn, $sql_dos_factores, $params);
|
|
|
|
if ($stmt_dos_factores && sqlsrv_execute($stmt_dos_factores)) {
|
|
if ($row = sqlsrv_fetch_array($stmt_dos_factores, SQLSRV_FETCH_ASSOC)) {
|
|
$correos['dos_factores'] = (int)$row['dos_factores']; // MEJORADO: Cast a int
|
|
}
|
|
}
|
|
|
|
// Obtener correo_extra
|
|
$sql_extra = "SELECT correo FROM correo_extra WHERE id_usuario = ?";
|
|
$stmt_extra = sqlsrv_prepare($conn, $sql_extra, $params);
|
|
|
|
if ($stmt_extra && sqlsrv_execute($stmt_extra)) {
|
|
if ($row = sqlsrv_fetch_array($stmt_extra, SQLSRV_FETCH_ASSOC)) {
|
|
$correos['correo_extra'] = $row['correo'];
|
|
}
|
|
}
|
|
|
|
// Obtener correo_respaldo
|
|
$sql_respaldo = "SELECT correo FROM correo_respaldo WHERE id_usuario = ?";
|
|
$stmt_respaldo = sqlsrv_prepare($conn, $sql_respaldo, $params);
|
|
|
|
if ($stmt_respaldo && sqlsrv_execute($stmt_respaldo)) {
|
|
if ($row = sqlsrv_fetch_array($stmt_respaldo, SQLSRV_FETCH_ASSOC)) {
|
|
$correos['correo_respaldo'] = $row['correo'];
|
|
}
|
|
}
|
|
|
|
return $correos;
|
|
}
|
|
|
|
function ventanillaUnica()
|
|
{
|
|
$conn = getConnection();
|
|
|
|
$id_usuario = $_SESSION['usuario_id'] ?? null;
|
|
|
|
// Asegúrate de que el usuario está autenticado
|
|
if (!$id_usuario || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
die("Usuario no autenticado.");
|
|
}
|
|
|
|
// Obtener configuración actual de ventanilla única
|
|
$configuracion_vu = obtenerConfiguracionVU($conn, $id_usuario);
|
|
|
|
include __DIR__ . '/../../views/seguridad/ventanilla_unica.php';
|
|
}
|
|
|
|
function guardarConfiguracionVU()
|
|
{
|
|
// Solo ejecutar si es una petición POST
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
|
|
$id_usuario = $_SESSION['usuario_id'] ?? null;
|
|
if (!$id_usuario || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
die("No autorizado - Sesión inválida");
|
|
}
|
|
|
|
// Obtener datos del formulario (sin ruta_ejecutable)
|
|
$clave_fiel = trim($_POST['clave_fiel'] ?? '');
|
|
$rfc_usuario_vu = trim($_POST['rfc_usuario_vu'] ?? '');
|
|
$clave_webservice = trim($_POST['clave_webservice'] ?? '');
|
|
|
|
// Validar campos obligatorios (sin ruta_ejecutable)
|
|
if (empty($clave_fiel) || empty($rfc_usuario_vu)) {
|
|
$_SESSION['config_error'] = 'Los campos Clave FIEL y RFC Usuario VU son obligatorios.';
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
// Obtener configuración actual para conservar archivos existentes
|
|
$configuracion_actual = obtenerConfiguracionVU($conn, $id_usuario);
|
|
$ruta_archivo_key = $configuracion_actual['ruta_archivo_key'];
|
|
$ruta_archivo_cer = $configuracion_actual['ruta_archivo_cer'];
|
|
|
|
// Directorio para archivos de certificados
|
|
$upload_dir = __DIR__ . '/../../storage/certificados/';
|
|
if (!is_dir($upload_dir)) {
|
|
mkdir($upload_dir, 0755, true);
|
|
}
|
|
|
|
// Procesar archivo KEY
|
|
if (!empty($_FILES['archivo_key']['tmp_name']) && $_FILES['archivo_key']['error'] === UPLOAD_ERR_OK) {
|
|
$key_extension = pathinfo($_FILES['archivo_key']['name'], PATHINFO_EXTENSION);
|
|
|
|
if (strtolower($key_extension) !== 'key') {
|
|
$_SESSION['config_error'] = 'El archivo KEY debe tener extensión .key';
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
$key_filename = 'key_' . $id_usuario . '_' . time() . '.key';
|
|
$key_destination = $upload_dir . $key_filename;
|
|
|
|
if (move_uploaded_file($_FILES['archivo_key']['tmp_name'], $key_destination)) {
|
|
// Eliminar archivo anterior si existe
|
|
if ($ruta_archivo_key && file_exists($ruta_archivo_key)) {
|
|
unlink($ruta_archivo_key);
|
|
}
|
|
$ruta_archivo_key = $key_destination;
|
|
} else {
|
|
$_SESSION['config_error'] = 'Error al subir el archivo KEY.';
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
// Procesar archivo CER
|
|
if (!empty($_FILES['archivo_cer']['tmp_name']) && $_FILES['archivo_cer']['error'] === UPLOAD_ERR_OK) {
|
|
$cer_extension = pathinfo($_FILES['archivo_cer']['name'], PATHINFO_EXTENSION);
|
|
|
|
if (strtolower($cer_extension) !== 'cer') {
|
|
$_SESSION['config_error'] = 'El archivo CER debe tener extensión .cer';
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
$cer_filename = 'cer_' . $id_usuario . '_' . time() . '.cer';
|
|
$cer_destination = $upload_dir . $cer_filename;
|
|
|
|
if (move_uploaded_file($_FILES['archivo_cer']['tmp_name'], $cer_destination)) {
|
|
// Eliminar archivo anterior si existe
|
|
if ($ruta_archivo_cer && file_exists($ruta_archivo_cer)) {
|
|
unlink($ruta_archivo_cer);
|
|
}
|
|
$ruta_archivo_cer = $cer_destination;
|
|
} else {
|
|
$_SESSION['config_error'] = 'Error al subir el archivo CER.';
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
// Validar que se hayan subido los certificados (obligatorios para nueva configuración)
|
|
if (empty($ruta_archivo_key) || empty($ruta_archivo_cer)) {
|
|
$_SESSION['config_error'] = 'Los archivos CER y KEY son obligatorios.';
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
// Encriptar las contraseñas sensibles
|
|
$clave_fiel_encrypted = encrypt($clave_fiel);
|
|
$clave_webservice_encrypted = !empty($clave_webservice) ? encrypt($clave_webservice) : '';
|
|
|
|
// Verificar si ya existe configuración - CORREGIR ERROR SQL
|
|
$sql_check = "SELECT COUNT(*) as total FROM configuracion_ventanilla_unica WHERE id_usuario = ?";
|
|
$stmt_check = sqlsrv_query($conn, $sql_check, [$id_usuario]);
|
|
|
|
if ($stmt_check === false) {
|
|
$_SESSION['config_error'] = 'Error en la consulta de configuración: ' . print_r(sqlsrv_errors(), true);
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
$row = sqlsrv_fetch_array($stmt_check, SQLSRV_FETCH_ASSOC);
|
|
|
|
if ($row['total'] > 0) {
|
|
// Actualizar configuración existente (sin ruta_ejecutable)
|
|
$sql = "UPDATE configuracion_ventanilla_unica SET
|
|
ruta_archivo_key = ?,
|
|
ruta_archivo_cer = ?,
|
|
clave_fiel = ?,
|
|
rfc_usuario_vu = ?,
|
|
clave_webservice = ?,
|
|
fecha_actualizacion = GETDATE()
|
|
WHERE id_usuario = ?";
|
|
$params = [
|
|
$ruta_archivo_key,
|
|
$ruta_archivo_cer,
|
|
$clave_fiel_encrypted,
|
|
$rfc_usuario_vu,
|
|
$clave_webservice_encrypted,
|
|
$id_usuario
|
|
];
|
|
} else {
|
|
// Insertar nueva configuración (sin ruta_ejecutable)
|
|
$sql = "INSERT INTO configuracion_ventanilla_unica
|
|
(id_usuario, ruta_archivo_key, ruta_archivo_cer,
|
|
clave_fiel, rfc_usuario_vu, clave_webservice, fecha_creacion)
|
|
VALUES (?, ?, ?, ?, ?, ?, GETDATE())";
|
|
$params = [
|
|
$id_usuario,
|
|
$ruta_archivo_key,
|
|
$ruta_archivo_cer,
|
|
$clave_fiel_encrypted,
|
|
$rfc_usuario_vu,
|
|
$clave_webservice_encrypted
|
|
];
|
|
}
|
|
|
|
$stmt = sqlsrv_prepare($conn, $sql, $params);
|
|
|
|
if (!$stmt) {
|
|
$_SESSION['config_error'] = "Error en la preparación: " . print_r(sqlsrv_errors(), true);
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
$result = sqlsrv_execute($stmt);
|
|
|
|
if ($result === false) {
|
|
$_SESSION['config_error'] = "Error al guardar configuración: " . print_r(sqlsrv_errors(), true);
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
sqlsrv_free_stmt($stmt);
|
|
sqlsrv_close($conn);
|
|
|
|
$_SESSION['config_success'] = 'Configuración de Ventanilla Única guardada correctamente.';
|
|
header('Location: /IMPORTADORES/seguridad/ventanillaUnica');
|
|
exit;
|
|
}
|
|
|
|
function probarConexionVU()
|
|
{
|
|
header('Content-Type: application/json');
|
|
|
|
$id_usuario = $_SESSION['usuario_id'] ?? null;
|
|
if (!$id_usuario || ($_SESSION['pendiente_confirmacion'] ?? false)) {
|
|
echo json_encode(['success' => false, 'message' => 'Usuario no autenticado']);
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$configuracion = obtenerConfiguracionVU($conn, $id_usuario);
|
|
|
|
// Verificar que todos los campos requeridos estén configurados (sin ruta_ejecutable)
|
|
if (empty($configuracion['rfc_usuario_vu']) || empty($configuracion['clave_fiel'])) {
|
|
echo json_encode([
|
|
'success' => false,
|
|
'message' => 'Configuración incompleta. Verifica que RFC Usuario VU y Clave FIEL estén configurados.'
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
// Verificar archivos de certificados
|
|
if (!empty($configuracion['ruta_archivo_cer']) && !file_exists($configuracion['ruta_archivo_cer'])) {
|
|
echo json_encode([
|
|
'success' => false,
|
|
'message' => 'El archivo CER no existe en la ruta especificada.'
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
if (!empty($configuracion['ruta_archivo_key']) && !file_exists($configuracion['ruta_archivo_key'])) {
|
|
echo json_encode([
|
|
'success' => false,
|
|
'message' => 'El archivo KEY no existe en la ruta especificada.'
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
// Verificar que existan ambos archivos de certificados
|
|
if (empty($configuracion['ruta_archivo_cer']) || empty($configuracion['ruta_archivo_key'])) {
|
|
echo json_encode([
|
|
'success' => false,
|
|
'message' => 'Los archivos CER y KEY son obligatorios para la configuración.'
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
// Si llegamos aquí, la configuración es válida
|
|
echo json_encode([
|
|
'success' => true,
|
|
'message' => 'Configuración válida. Los archivos de certificados existen y todos los campos obligatorios están completos.'
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
function obtenerConfiguracionVU($conn, $id_usuario)
|
|
{
|
|
$configuracion = [
|
|
'ruta_archivo_key' => '',
|
|
'ruta_archivo_cer' => '',
|
|
'clave_fiel' => '',
|
|
'rfc_usuario_vu' => '',
|
|
'clave_webservice' => '',
|
|
'fecha_creacion' => null,
|
|
'fecha_actualizacion' => null
|
|
];
|
|
|
|
$sql = "SELECT * FROM configuracion_ventanilla_unica WHERE id_usuario = ?";
|
|
$stmt = sqlsrv_prepare($conn, $sql, [$id_usuario]);
|
|
|
|
if ($stmt && sqlsrv_execute($stmt)) {
|
|
if ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$configuracion['ruta_archivo_key'] = $row['ruta_archivo_key'] ?? '';
|
|
$configuracion['ruta_archivo_cer'] = $row['ruta_archivo_cer'] ?? '';
|
|
$configuracion['rfc_usuario_vu'] = $row['rfc_usuario_vu'] ?? '';
|
|
|
|
// Desencriptar contraseñas
|
|
$configuracion['clave_fiel'] = !empty($row['clave_fiel']) ? decrypt($row['clave_fiel']) : '';
|
|
$configuracion['clave_webservice'] = !empty($row['clave_webservice']) ? decrypt($row['clave_webservice']) : '';
|
|
|
|
$configuracion['fecha_creacion'] = $row['fecha_creacion'];
|
|
$configuracion['fecha_actualizacion'] = $row['fecha_actualizacion'];
|
|
}
|
|
}
|
|
|
|
return $configuracion;
|
|
} |