feat: logging function for resource activities (#2369)

This commit is contained in:
Benjamin Eder 2023-03-12 19:35:36 +01:00
parent 935259387a
commit 3ba68c2acf
No known key found for this signature in database
GPG Key ID: 21B6BE3EC42C7B29
3 changed files with 96 additions and 0 deletions

26
audit/log.go Normal file
View 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
View 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
View File

@ -0,0 +1,11 @@
package audit
import (
"github.com/filebrowser/filebrowser/v2/users"
)
type ResourceActivity struct {
Event string
ResourcePath string
User *users.User
}