Actulizacion README.md

This commit is contained in:
Julian Rojas
2024-11-27 12:30:38 +00:00
parent 2d47cbf72b
commit 6327554e6c
+86 -3
View File
@@ -1,4 +1,3 @@
# Integración de la Biblioteca AuditLogs # Integración de la Biblioteca AuditLogs
## Configuración y Uso de AuditLogs ## Configuración y Uso de AuditLogs
@@ -40,6 +39,53 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuditServices(builder.Configuration); builder.Services.AddAuditServices(builder.Configuration);
builder.Services.AddHttpContextAccessor(); builder.Services.AddHttpContextAccessor();
``` ```
### 4. Modificación de la generación del token para incluir información (Opcional)
El servicio de autoría utiliza httpContext para extraer información del usuario que está haciendo los cambios, usted puede incluir más información si hace cambios en su modelo de usuario por ejemplo agregando un atributo Ip
```csharp
using MongoDB.Bson;
namespace smacs_uci_api.Domain.Models.MongoModels
{
public class User {
public ObjectId Id { get; set; }
public string Name { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
public string IpAddress { get; set; } = string.Empty;
//otros datos
}
}
```
Luego en la parte donde se hace la autenticación en este caso clase UserService puede modificar la creación del token para agregar esta información
```csharp
public TokenResult GenerateJwt(User user)
{
// Claims basicos del usuario
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, user.UserName),
new Claim(ClaimTypes.Email, user.Email),
new Claim("IpAddress", user.IpAddress)
};
// Agregar claims de autorizaciones utilizando ClaimsFromAuthorities
claims.AddRange(ClaimsFromAuthorities(user.Authorization));
// mas logica para este metodos...
return new TokenResult
{
AccessToken = new JwtSecurityTokenHandler().WriteToken(accessToken),
RefreshToken = new JwtSecurityTokenHandler().WriteToken(refreshToken),
AccessTokenExpiryTime = accessToken.ValidTo,
RefreshTokenExpiryTime = refreshToken.ValidTo,
User = user
};
}
}
```
la biblioteca buscará el parámetro IpAddress y lo configura en el registro de autoría, si no se envia pondrá un valor por defecto
### Uso en Servicios ### Uso en Servicios
@@ -74,6 +120,43 @@ public class AdmissionService : IAdmissionService
``` ```
### Resumen ## Creación de Controladores de Consulta
Los pasos anteriores permiten la integración de la biblioteca `AuditLogs` para la captura y registro de eventos de auditoría de manera eficiente. Es recomendable realizar pruebas exhaustivas en el entorno de desarrollo antes de desplegar en producción para asegurar la correcta configuración y funcionamiento. Para crear un controlador que permita consultar los registros de auditoría, siga este ejemplo:
```csharp
using audit_logs.Services.Interfaces;
using Microsoft.AspNetCore.Mvc;
namespace smacs_uci_api.Controllers
{
[Route("Audit")]
[ApiController]
public class AuditController : ControllerBase
{
private readonly IAuditService _auditService;
public AuditController(IAuditService auditService)
{
_auditService = auditService;
}
[HttpPost]
public async Task<IActionResult> GetAuditRecordsByAnyTextField(
[FromBody] audit_logs.Models.DTO.AuditLogTextOrDateSearchDTO auditRequestDto)
{
try
{
var result = await _auditService.GetAuditLogsMatchingTextOrDateAsync(auditRequestDto);
return Ok(result);
}
catch (ArgumentException ex)
{
return BadRequest(ex.Message);
}
}
}
}
```
Este controlador utiliza `IAuditService` para recuperar registros basados en texto y fechas especificadas por el usuario.