diff --git a/.releaserc.yaml b/.releaserc.yaml index 7a7ec23..125c177 100644 --- a/.releaserc.yaml +++ b/.releaserc.yaml @@ -1,6 +1,6 @@ --- -branches: - - name: main +#branches: +# - name: main # range: '3000.x.x' # - name: release/2k diff --git a/service/internal/executor/executor.go b/service/internal/executor/executor.go index 96808f3..00afc5d 100644 --- a/service/internal/executor/executor.go +++ b/service/internal/executor/executor.go @@ -234,6 +234,48 @@ 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()