feat: logging function for resource activities (#2369)
This commit is contained in:
parent
935259387a
commit
3ba68c2acf
26
audit/log.go
Normal file
26
audit/log.go
Normal file
@ -0,0 +1,26 @@
|
||||
package audit
|
||||
|
||||
import "fmt"
|
||||
|
||||
// LogResourceActivity prints an entry to the audit log with information about the given event, file and user.
|
||||
//
|
||||
// The event should be describing the activity that was performed, e.g. Deletion.
|
||||
// This results in a log entry like "Deletion of file with path /srv/test.txt by user test (42)".
|
||||
func LogResourceActivity(info ResourceActivity) {
|
||||
message := createLogMessage(info)
|
||||
logToAuditLogger(message)
|
||||
}
|
||||
|
||||
func createLogMessage(info ResourceActivity) string {
|
||||
return fmt.Sprintf(
|
||||
"%v of resource with path %v by user %v (%v)",
|
||||
info.Event,
|
||||
info.ResourcePath,
|
||||
info.User.Username,
|
||||
info.User.ID,
|
||||
)
|
||||
}
|
||||
|
||||
func logToAuditLogger(message string) {
|
||||
auditLogger.Println(message)
|
||||
}
|
||||
59
audit/log_test.go
Normal file
59
audit/log_test.go
Normal file
@ -0,0 +1,59 @@
|
||||
package audit
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/filebrowser/filebrowser/v2/users"
|
||||
"log"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLogFileActivity(t *testing.T) {
|
||||
resultBuffer := setupTestLogger()
|
||||
|
||||
info := ResourceActivity{
|
||||
Event: "Deletion",
|
||||
ResourcePath: "/srv/test.txt",
|
||||
User: &users.User{
|
||||
Username: "test",
|
||||
ID: 42,
|
||||
},
|
||||
}
|
||||
|
||||
LogResourceActivity(info)
|
||||
|
||||
result := resultBuffer.String()
|
||||
expectedResult := "Deletion of resource with path /srv/test.txt by user test (42)\n"
|
||||
if result != expectedResult {
|
||||
t.Errorf("Log entry should be \"%v\" but is \"%v\"", expectedResult, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogFileActivityDirectory(t *testing.T) {
|
||||
resultBuffer := setupTestLogger()
|
||||
|
||||
info := ResourceActivity{
|
||||
Event: "Creation",
|
||||
ResourcePath: "/srv/test.txt",
|
||||
User: &users.User{
|
||||
Username: "test",
|
||||
ID: 42,
|
||||
},
|
||||
}
|
||||
|
||||
LogResourceActivity(info)
|
||||
|
||||
result := resultBuffer.String()
|
||||
expectedResult := "Creation of resource with path /srv/test.txt by user test (42)\n"
|
||||
if result != expectedResult {
|
||||
t.Errorf("Log entry should be \"%v\" but is \"%v\"", expectedResult, result)
|
||||
}
|
||||
}
|
||||
|
||||
func setupTestLogger() *bytes.Buffer {
|
||||
var testBuffer bytes.Buffer
|
||||
testLogger := log.New(&testBuffer, "", 0)
|
||||
|
||||
auditLogger = testLogger
|
||||
|
||||
return &testBuffer
|
||||
}
|
||||
11
audit/types.go
Normal file
11
audit/types.go
Normal file
@ -0,0 +1,11 @@
|
||||
package audit
|
||||
|
||||
import (
|
||||
"github.com/filebrowser/filebrowser/v2/users"
|
||||
)
|
||||
|
||||
type ResourceActivity struct {
|
||||
Event string
|
||||
ResourcePath string
|
||||
User *users.User
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user