From 7effa588448e4cc150de105df955937a70490bba Mon Sep 17 00:00:00 2001 From: dmolinari Date: Mon, 13 Oct 2025 14:19:04 +0000 Subject: [PATCH] Actualizar README.md --- README.md | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index dbe880d..de0c242 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,18 @@ El sistema se compone de un **backend RESTful API desarrollado en ASP.NET Core** El sistema está diseñado en torno a la gestión y visualización de activos de TI, con un fuerte énfasis en la calidad y consistencia de los datos. +### 🔒 Seguridad y Autenticación +- **Autenticación Basada en JWT:** Acceso a la API protegido mediante JSON Web Tokens. +- **Login Simple y Seguro:** Un único par de credenciales (usuario/contraseña) configurables en el backend para acceder a toda la aplicación. +- **Sesión Persistente Opcional:** En la pantalla de login, el usuario puede elegir "Mantener sesión iniciada". + - **Si se marca:** El token se almacena de forma persistente (`localStorage`), sobreviviendo a cierres del navegador. El token tiene una validez de **1 año**. + - **Si no se marca:** El token se almacena en la sesión del navegador (`sessionStorage`), cerrándose automáticamente al finalizar la sesión. El token tiene una validez de **6 horas**. + ### 📋 Módulo de Equipos - **Vista Principal Centralizada:** Una tabla paginada, con capacidad de búsqueda y filtrado por sector, que muestra todos los equipos del inventario. - **Detalle Completo del Equipo:** Al hacer clic en un equipo, se abre una vista detallada con toda su información: - **Datos Principales:** Hostname, IP, MAC, OS, etc. - - **Componentes Asociados:** Lista detallada de discos, módulos de RAM, usuarios asociados,CPU, Motherboard, RAM instalada, etc. + - **Componentes Asociados:** Lista detallada de discos, módulos de RAM, usuarios asociados, CPU, Motherboard, RAM instalada, etc. - **Estado en Tiempo Real:** Indicador visual que muestra si el equipo está `En línea` o `Sin conexión` mediante un ping. - **Historial de Cambios:** Un registro cronológico de todas las modificaciones realizadas en el equipo. - **Acciones Remotas:** @@ -50,14 +57,17 @@ El sistema está diseñado en torno a la gestión y visualización de activos de - **Lenguaje:** C# - **Acceso a Datos:** Dapper (Micro ORM) - **Base de Datos:** Microsoft SQL Server +- **Autenticación:** JWT Bearer Token (`Microsoft.AspNetCore.Authentication.JwtBearer`) - **Comandos Remotos:** Renci.SshNet para ejecución de comandos SSH (Wake On Lan) ### Frontend (`frontend/`) - **Framework/Librería:** React 19 - **Lenguaje:** TypeScript - **Gestión de Tabla:** TanStack Table v8 +- **Gráficos:** Chart.js con `react-chartjs-2` - **Notificaciones:** React Hot Toast - **Tooltips:** React Tooltip +- **Iconos:** Lucide React - **Build Tool:** Vite --- @@ -81,46 +91,49 @@ cd nombre-del-repositorio ### 2. Configuración de la Base de Datos 1. Abra SSMS y conecte a su instancia de SQL Server. 2. Cree una nueva base de datos llamada `InventarioDB`. -3. Ejecute el script `dboInventarioDB.txt` (ubicado en la raíz del proyecto o en la carpeta `backend/`) sobre la base de datos recién creada. Esto creará todas las tablas, relaciones y claves necesarias. +3. Ejecute el script SQL `InventarioDB.sql` (ubicado en la raíz del proyecto) sobre la base de datos recién creada. Esto creará todas las tablas, relaciones y claves necesarias. ### 3. Configuración del Backend 1. Navegue al directorio del backend: `cd backend`. -2. Abra el archivo `appsettings.json`. -3. Modifique la `ConnectionString` para que apunte a su instancia de SQL Server, asegurándose de que el usuario (`User Id` y `Password`) tenga permisos sobre la base de datos `InventarioDB`. +2. Abra el archivo `appsettings.Development.json` (o `appsettings.json` para producción). +3. **Modifique la `ConnectionString`** para que apunte a su instancia de SQL Server. ```json "ConnectionStrings": { "DefaultConnection": "Server=NOMBRE_SU_SERVIDOR;Database=InventarioDB;User Id=su_usuario_sql;Password=su_contraseña;TrustServerCertificate=True" } ``` -4. En el mismo archivo, configure las credenciales del servidor SSH que se usará para la función Wake On Lan en la sección `SshSettings`. +4. **Configure las credenciales de la aplicación y la clave JWT**. Es crucial cambiar los valores por defecto por unos seguros y únicos. ```json - "SshSettings": { - "Host": "", - "Port": , - "User": "", - "Password": "" + "AuthSettings": { + "Username": "admin", + "Password": "SU_NUEVA_CLAVE_SEGURA_AQUI" + }, + "Jwt": { + "Key": "SU_CLAVE_SECRETA_LARGA_Y_COMPLEJA_PARA_JWT", + "Issuer": "InventarioAPI", + "Audience": "InventarioClient" } ``` -5. Instale las dependencias y ejecute el backend: +5. **Configure las credenciales del servidor SSH** que se usará para la función Wake On Lan en la sección `SshSettings`. + +6. Instale las dependencias y ejecute el backend: ```bash dotnet restore dotnet run - ``` - La API estará disponible en `http://localhost:5198` y la UI de Swagger en la misma URL. +La API estará disponible en `http://localhost:5198` y la UI de Swagger en la misma URL. ### 4. Configuración del Frontend 1. En una nueva terminal, navegue al directorio del frontend: `cd frontend`. 2. Instale las dependencias: ```bash npm install - ``` -3. El frontend ya está configurado para apuntar a la URL del backend (`http://localhost:5198`) en el archivo `SimpleTable.tsx`. Si ha cambiado el puerto del backend, deberá actualizar esta constante `BASE_URL`. +3. **Verificar la configuración del Proxy.** El frontend utiliza un proxy de Vite para redirigir las peticiones de `/api` al backend. Esta configuración se encuentra en `frontend/vite.config.ts`. Si estás ejecutando el backend en el puerto por defecto (`5198`), no necesitas hacer ningún cambio. + 4. Ejecute el frontend en modo de desarrollo: ```bash npm run dev - ``` - La aplicación web estará disponible en `http://localhost:5173` (o el puerto que indique Vite). +La aplicación web estará disponible en `http://localhost:5173` (o el puerto que indique Vite). --- \ No newline at end of file