Exemplo n.º 1
0
        public void Log(IAuditEntry entry, string content = "", bool newRecord = true)
        {
            Document doc = new Document();

            AddField(doc, "user", entry.User.ToLower(), Field.Index.NOT_ANALYZED);
            if (!_users.Contains(entry.User.ToLower()))
            {
                _users.Add(entry.User.ToLower());
            }
            AddField(doc, "path", entry.Path, Field.Index.ANALYZED);
            AddField(doc, "id", entry.Id.ToLower(), Field.Index.ANALYZED);
            AddField(doc, "date", entry.TimeStamp.ToString("yyyyMMdd"), Field.Index.ANALYZED);
            AddField(doc, "timestamp", entry.TimeStamp.ToString("yyyy-MM-ddTHH:mm:ss.fff"), Field.Index.ANALYZED);
            AddField(doc, "note", entry.Note, Field.Index.ANALYZED);
            AddField(doc, "database", entry.Database, Field.Index.ANALYZED);
            AddField(doc, "icon", entry.Icon, Field.Index.NOT_ANALYZED);
            foreach (var role in entry.Role)
            {
                AddField(doc, "role", role.ToLower(), Field.Index.NOT_ANALYZED);
            }
            AddField(doc, "event", entry.EventId, Field.Index.ANALYZED);
            if (!string.IsNullOrWhiteSpace(content))
            {
                AddField(doc, "content", content, Field.Index.ANALYZED);
            }
            _writeQueue.Enqueue(newRecord
                                ? new Tuple <AuditSourceRecord, Document>(new AuditSourceRecord(entry as ItemAuditEntry, content), doc)
                                : new Tuple <AuditSourceRecord, Document>(null, doc));
            KickOptimizeTimer();
        }
Exemplo n.º 2
0
        public void Write_and_GetAll()
        {
            var         sut      = (AuditService)Services.GetRequiredService <IAuditService>();
            IAuditEntry expected = new AuditEntryBuilder().Build();

            IAuditEntry actual = sut.Write(
                expected.PerformingUserId,
                expected.PerformingDetails,
                expected.PerformingIp,
                expected.EventDateUtc,
                expected.AffectedUserId,
                expected.AffectedDetails,
                expected.EventType,
                expected.EventDetails);

            IAuditEntry[] entries = sut.GetAll().ToArray();

            Assert.Multiple(() =>
            {
                Assert.AreEqual(expected.PerformingUserId, actual.PerformingUserId);
                Assert.AreEqual(expected.PerformingDetails, actual.PerformingDetails);
                Assert.AreEqual(expected.EventDateUtc, actual.EventDateUtc);
                Assert.AreEqual(expected.AffectedUserId, actual.AffectedUserId);
                Assert.AreEqual(expected.AffectedDetails, actual.AffectedDetails);
                Assert.AreEqual(expected.EventType, actual.EventType);
                Assert.AreEqual(expected.EventDetails, actual.EventDetails);
                Assert.IsNotNull(entries);
                Assert.AreEqual(1, entries.Length);
                Assert.AreEqual(expected.PerformingUserId, entries[0].PerformingUserId);
            });
        }
Exemplo n.º 3
0
        public void Log(IAuditEntry entry, string content = "")
        {
            Document doc = new Document();

            AddField(doc, "user", entry.User.ToLower(), Field.Index.NOT_ANALYZED);
            if (!users.Contains(entry.User.ToLower()))
            {
                users.Add(entry.User.ToLower());
            }
            AddField(doc, "path", entry.Path, Field.Index.ANALYZED);
            AddField(doc, "id", entry.Id.ToShortID().ToString().ToLower(), Field.Index.ANALYZED);
            AddField(doc, "date", entry.TimeStamp.ToString("yyyyMMdd"), Field.Index.ANALYZED);
            AddField(doc, "timestamp", entry.TimeStamp.ToString("yyyy-MM-ddTHH:mm:ss.fff"), Field.Index.ANALYZED);
            AddField(doc, "note", entry.Note, Field.Index.ANALYZED);
            AddField(doc, "database", entry.Database, Field.Index.ANALYZED);
            foreach (var role in entry.Role)
            {
                AddField(doc, "role", role.ToLower(), Field.Index.NOT_ANALYZED);
            }
            AddField(doc, "event", entry.EventId, Field.Index.ANALYZED);
            if (!string.IsNullOrWhiteSpace(content))
            {
                AddField(doc, "content", content, Field.Index.ANALYZED);
            }
            writeQueue.Enqueue(doc);
            KickOptimizeTimer();
        }
Exemplo n.º 4
0
 public static AuditEntryDto BuildDto(IAuditEntry entity) =>
 new AuditEntryDto
 {
     Id = entity.Id,
     PerformingUserId  = entity.PerformingUserId,
     PerformingDetails = entity.PerformingDetails,
     PerformingIp      = entity.PerformingIp,
     EventDateUtc      = entity.EventDateUtc,
     AffectedUserId    = entity.AffectedUserId,
     AffectedDetails   = entity.AffectedDetails,
     EventType         = entity.EventType,
     EventDetails      = entity.EventDetails,
 };
Exemplo n.º 5
0
 public async Task LogAuditAsync(string message, IAuditEntry auditEntry)
 {
     try
     {
         AuditLogEntry entry = new AuditLogEntry {
             Message = message, AuditEntry = auditEntry
         };
         SetLogEntryCommonProperties(entry);
         var document = _bsonDocumentBuilderService.BuildAuditLogEntry(entry);
         await _dataAccessService.SaveAsync(document, _databaseName, _loggerName);
     }
     catch (Exception e)
     {
         throw new FailedToLogException("Failed to log : " + e.Message, e);
     }
 }
Exemplo n.º 6
0
        public void Log(IAuditEntry entry, string content = "", bool newRecord = true)
        {
            Guid userId;

            using (var db = new SqlAuditLogDataContext())
            {
                var username        = entry.User.ToLower();
                var sqlAuditLogUser = db.ExecuteQuery <SqlAuditLogUser>("SELECT * FROM dbo.Users WHERE Username = {0}", username).ToList();
                if (!sqlAuditLogUser.Any())
                {
                    userId = Guid.NewGuid();
                    db.ExecuteCommand("INSERT INTO dbo.Users (Id, Username) VALUES ({0}, {1})", userId, username);
                }
                else
                {
                    userId = sqlAuditLogUser.First().Id;
                }
            }

            var role = _jsonSerializationService.SerializeObject(entry.Role);

            using (var db = new SqlAuditLogDataContext())
            {
                db.ExecuteCommand(
                    "INSERT INTO [dbo].[AuditEntry] " +
                    "([Id], [UserId], [Role], [ItemId], [Database], [Path], [TimeStamp], [EventId], [Note], [Label], [Color], [Icon], [Content]) " +
                    "VALUES ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12})",
                    Guid.NewGuid(),
                    userId,
                    role,
                    entry.Id?.ToLower() ?? "",
                    entry.Database ?? "",
                    entry.Path ?? "",
                    DateTime.Now,
                    entry.EventId ?? "",
                    entry.Note ?? "",
                    entry.Label ?? "",
                    entry.Color ?? "",
                    entry.Icon ?? "",
                    content ?? ""
                    );
            }
        }
Exemplo n.º 7
0
 public void Log(IAuditEntry entry, string content = "")
 {
     Document doc = new Document();
     AddField(doc, "user", entry.User.ToLower(), Field.Index.NOT_ANALYZED);
     if (!users.Contains(entry.User.ToLower()))
         users.Add(entry.User.ToLower());
     AddField(doc, "path", entry.Path, Field.Index.ANALYZED);
     AddField(doc, "id", entry.Id.ToShortID().ToString().ToLower(), Field.Index.ANALYZED);
     AddField(doc, "date", entry.TimeStamp.ToString("yyyyMMdd"), Field.Index.ANALYZED);
     AddField(doc, "timestamp", entry.TimeStamp.ToString("yyyy-MM-ddTHH:mm:ss.fff"), Field.Index.ANALYZED);
     AddField(doc, "note", entry.Note, Field.Index.ANALYZED);
     AddField(doc, "database", entry.Database, Field.Index.ANALYZED);
     foreach (var role in entry.Role)
         AddField(doc, "role", role.ToLower(), Field.Index.NOT_ANALYZED);
     AddField(doc, "event", entry.EventId, Field.Index.ANALYZED);
     if (!string.IsNullOrWhiteSpace(content))
         AddField(doc, "content", content, Field.Index.ANALYZED);
     writeQueue.Enqueue(doc);
     KickOptimizeTimer();
 }
Exemplo n.º 8
0
        public async Task Create(IAuditEntry auditEntry)
        {
            await Task.Delay(300);

            Debug.WriteLine($"Audit created, {auditEntry.Operation}: {auditEntry.Data}.");
        }