Browse Source

Audit middleware revised.

pull/395/head
Halil ibrahim Kalkan 8 years ago
parent
commit
9e8b8f21f5
  1. 66
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
  2. 33
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpUnitOfWorkMiddleware.cs
  3. 10
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs

66
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs

@ -0,0 +1,66 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
using Volo.Abp.Auditing;
using Volo.Abp.Users;
namespace Volo.Abp.AspNetCore.Auditing
{
public class AbpAuditingMiddleware
{
private readonly RequestDelegate _next;
private readonly IAuditingManager _auditingManager;
protected AuditingOptions Options { get; }
protected ICurrentUser CurrentUser { get; }
public AbpAuditingMiddleware(
RequestDelegate next,
IAuditingManager auditingManager,
ICurrentUser currentUser,
IOptions<AuditingOptions> options)
{
_next = next;
_auditingManager = auditingManager;
CurrentUser = currentUser;
Options = options.Value;
}
public async Task Invoke(HttpContext httpContext)
{
if (!ShouldWriteAuditLog())
{
await _next(httpContext);
return;
}
using (var scope = _auditingManager.BeginScope())
{
try
{
await _next(httpContext);
}
finally
{
await scope.SaveAsync();
}
}
}
private bool ShouldWriteAuditLog()
{
if (!Options.IsEnabled)
{
return false;
}
if (!Options.IsEnabledForAnonymousUsers && !CurrentUser.IsAuthenticated)
{
return false;
}
return true;
}
}
}

33
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpUnitOfWorkMiddleware.cs

@ -1,33 +0,0 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Volo.Abp.Auditing;
namespace Volo.Abp.AspNetCore.Auditing
{
public class AbpAuditingMiddleware
{
private readonly RequestDelegate _next;
private readonly IAuditingManager _auditingManager;
public AbpAuditingMiddleware(RequestDelegate next, IAuditingManager auditingManager)
{
_next = next;
_auditingManager = auditingManager;
}
public async Task Invoke(HttpContext httpContext)
{
using (var scope = _auditingManager.BeginScope())
{
try
{
await _next(httpContext);
}
finally
{
await scope.SaveAsync();
}
}
}
}
}

10
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs

@ -46,16 +46,6 @@ namespace Volo.Abp.Auditing
public virtual bool ShouldSaveAudit(MethodInfo methodInfo, bool defaultValue = false)
{
if (!Options.IsEnabled)
{
return false;
}
if (!Options.IsEnabledForAnonymousUsers && !CurrentUser.IsAuthenticated)
{
return false;
}
if (methodInfo == null)
{
return false;

Loading…
Cancel
Save