jamesread 5 месяцев назад
Родитель
Сommit
242149f5a4
1 измененных файлов с 44 добавлено и 26 удалено
  1. 44 26
      service/internal/executor/executor.go

+ 44 - 26
service/internal/executor/executor.go

@@ -234,41 +234,59 @@ func isLogEntryAllowedByACL(cfg *config.Config, user *authpublic.AuthenticatedUs
 	return acl.IsAllowedLogs(cfg, user, entry.Binding.Action)
 }
 
+// parseDateFilter parses a date filter string and returns the parsed date and validity.
+func parseDateFilter(dateFilter string) (time.Time, bool) {
+	if dateFilter == "" {
+		return time.Time{}, false
+	}
+
+	parsedDate, err := time.Parse("2006-01-02", dateFilter)
+	if err != nil {
+		log.WithFields(log.Fields{
+			"dateFilter": dateFilter,
+			"error":      err,
+		}).Errorf("Failed to parse date filter, expected format YYYY-MM-DD")
+		return time.Time{}, false
+	}
+
+	return parsedDate, true
+}
+
+// matchesDateFilter checks if an entry matches the date filter criteria.
+func matchesDateFilter(entry *InternalLogEntry, filterDate time.Time, hasDateFilter bool) bool {
+	if !hasDateFilter {
+		return true
+	}
+
+	entryDate := entry.DatetimeStarted.UTC().Truncate(24 * time.Hour)
+	filterDateUTC := filterDate.UTC().Truncate(24 * time.Hour)
+	return entryDate.Equal(filterDateUTC)
+}
+
+// shouldIncludeLogEntry determines if a log entry should be included in filtered results.
+func shouldIncludeLogEntry(cfg *config.Config, user *authpublic.AuthenticatedUser, entry *InternalLogEntry, filterDate time.Time, hasDateFilter bool) bool {
+	if !isValidLogEntryForACL(entry) {
+		return false
+	}
+
+	if !isLogEntryAllowedByACL(cfg, user, entry) {
+		return false
+	}
+
+	return matchesDateFilter(entry, filterDate, hasDateFilter)
+}
+
 func (e *Executor) filterLogsByACL(cfg *config.Config, user *authpublic.AuthenticatedUser, dateFilter string) []*InternalLogEntry {
 	e.logmutex.RLock()
 	defer e.logmutex.RUnlock()
 
 	filtered := make([]*InternalLogEntry, 0, len(e.logsTrackingIdsByDate))
-
-	var filterDate time.Time
-	var hasDateFilter bool
-	if dateFilter != "" {
-		parsedDate, err := time.Parse("2006-01-02", dateFilter)
-		if err != nil {
-			log.WithFields(log.Fields{
-				"dateFilter": dateFilter,
-				"error":      err,
-			}).Errorf("Failed to parse date filter, expected format YYYY-MM-DD")
-		} else {
-			filterDate = parsedDate
-			hasDateFilter = true
-		}
-	}
+	filterDate, hasDateFilter := parseDateFilter(dateFilter)
 
 	for _, trackingId := range e.logsTrackingIdsByDate {
 		entry := e.logs[trackingId]
 
-		if !isValidLogEntryForACL(entry) {
-			continue
-		}
-		if isLogEntryAllowedByACL(cfg, user, entry) {
-			if hasDateFilter {
-				entryDate := entry.DatetimeStarted.UTC().Truncate(24 * time.Hour)
-				filterDateUTC := filterDate.UTC().Truncate(24 * time.Hour)
-				if !entryDate.Equal(filterDateUTC) {
-					continue
-				}
-			}
+		if shouldIncludeLogEntry(cfg, user, entry, filterDate, hasDateFilter) {
 			filtered = append(filtered, entry)
 		}
 	}