summaryrefslogtreecommitdiffstats
path: root/api/WhatApi/Database.cs
diff options
context:
space:
mode:
authorivar <i@oiee.no>2025-12-02 22:38:23 +0100
committerivar <i@oiee.no>2025-12-02 22:38:23 +0100
commit68ffad06a6cfd2cd2015ab03fb82bf69629dd7ec (patch)
treeefab90e59deae00953704059efdec14cb3ad81c7 /api/WhatApi/Database.cs
parentd2089c0038460504869b27203143e40441a86eff (diff)
downloadwhat-68ffad06a6cfd2cd2015ab03fb82bf69629dd7ec.tar.xz
what-68ffad06a6cfd2cd2015ab03fb82bf69629dd7ec.zip
Move off razor pages
Diffstat (limited to 'api/WhatApi/Database.cs')
-rw-r--r--api/WhatApi/Database.cs16
1 files changed, 10 insertions, 6 deletions
diff --git a/api/WhatApi/Database.cs b/api/WhatApi/Database.cs
index 8e8ed07..8aeffed 100644
--- a/api/WhatApi/Database.cs
+++ b/api/WhatApi/Database.cs
@@ -1,13 +1,14 @@
using System.Security.Claims;
+using WhatApi.Extras;
using WhatApi.Tables;
namespace WhatApi;
-public class Database(DbContextOptions<Database> options, IHttpContextAccessor httpContextAccessor) : DbContext(options)
+public class Database(DbContextOptions<Database> options, IHttpContextAccessor httpContextAccessor, IConfiguration configuration) : DbContext(options)
{
public DbSet<Content> Content => Set<Content>();
public DbSet<Place> Places => Set<Place>();
- public DbSet<User> Users => Set<User>();
+ public DbSet<User> Users => Set<User>();
public DbSet<AuditTrail> AuditTrails => Set<AuditTrail>();
protected override void OnModelCreating(ModelBuilder b) {
@@ -20,22 +21,24 @@ public class Database(DbContextOptions<Database> options, IHttpContextAccessor h
}
public override int SaveChanges() {
+ if (configuration.GetValue<bool>("DISABLE_AUDIT_TRAILS")) return base.SaveChanges();
SetAuditableProperties();
- var auditEntries = HandleAuditingBeforeSaveChanges();
+ var auditEntries = GetActiveAuditTrails();
if (auditEntries.Count != 0)
AuditTrails.AddRange(auditEntries);
return base.SaveChanges();
}
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default) {
+ if (configuration.GetValue<bool>("DISABLE_AUDIT_TRAILS")) return await base.SaveChangesAsync(cancellationToken);
SetAuditableProperties();
- var auditEntries = HandleAuditingBeforeSaveChanges();
+ var auditEntries = GetActiveAuditTrails();
if (auditEntries.Count != 0)
await AuditTrails.AddRangeAsync(auditEntries, cancellationToken);
return await base.SaveChangesAsync(cancellationToken);
}
- private List<AuditTrail> HandleAuditingBeforeSaveChanges() {
+ private List<AuditTrail> GetActiveAuditTrails() {
var userId = GetUserId();
var entries = ChangeTracker.Entries<IAuditableEntity>()
.Where(e => e.State is EntityState.Added or EntityState.Modified or EntityState.Deleted);
@@ -56,7 +59,8 @@ public class Database(DbContextOptions<Database> options, IHttpContextAccessor h
continue;
}
- if (prop.Metadata.Name.Equals("Password")) continue;
+ if (prop.Metadata.PropertyInfo?.CustomAttributes.FirstOrDefault(c => c.AttributeType == typeof(AuditTrailIgnoreAttribute)) != null)
+ continue;
var name = prop.Metadata.Name;