package adminview
import (
"git.haelnorr.com/h/oslstats/internal/db"
"fmt"
"time"
)
templ AuditLogsList(logs *db.List[db.AuditLog], users []*db.User, actions []string, resourceTypes []string) {
Audit Logs
@AuditLogsResults(logs)
}
templ AuditLogsResults(logs *db.List[db.AuditLog]) {
if len(logs.Items) == 0 {
} else {
| Timestamp |
User |
Action |
Resource |
Resource ID |
Result |
Actions |
for _, log := range logs.Items {
|
{ formatFullTimestamp(log.CreatedAt) }
|
if log.User != nil {
{ log.User.Username }
} else {
Unknown
}
|
{ log.Action }
|
{ log.ResourceType }
|
if log.ResourceID != nil {
{ *log.ResourceID }
} else {
—
}
|
@resultBadge(log.Result)
|
|
}
{{
totalPages := (logs.Total + logs.PageOpts.PerPage - 1) / logs.PageOpts.PerPage
if logs.PageOpts.PerPage == 0 {
totalPages = 1
}
}}
if totalPages > 1 {
if logs.PageOpts.Page > 1 {
}
Page { fmt.Sprintf("%d", logs.PageOpts.Page) } of { fmt.Sprintf("%d", totalPages) }
if logs.PageOpts.Page < totalPages {
}
}
}
}
templ resultBadge(result string) {
{{
var classes string
switch result {
case "success":
classes = "px-2 py-0.5 bg-green/20 text-green rounded text-xs font-medium"
case "denied":
classes = "px-2 py-0.5 bg-yellow/20 text-yellow rounded text-xs font-medium"
case "error":
classes = "px-2 py-0.5 bg-red/20 text-red rounded text-xs font-medium"
default:
classes = "px-2 py-0.5 bg-surface1 text-subtext0 rounded text-xs font-medium"
}
}}
{ result }
}
func formatFullTimestamp(unixTime int64) string {
t := time.Unix(unixTime, 0)
return t.Format("Jan 2, 2006 15:04:05")
}