Actulizacion README.md
This commit is contained in:
+86
-3
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user