feat: activity log producers

This commit is contained in:
fsylvain committed 2026-10-06 22:25:23 +02:00
1 parent 50b1649965
commit e37a46a027
93 files changed
+3396 -440

No files matched your search

@@ -1,13 +1,16 @@
package useCases
import (
"RenewCMS/internal/domain/audit"
"RenewCMS/internal/domain/image"
"bytes"
"context"
"crypto/sha256"
"encoding/hex"
"encoding/xml"
stdimage "image"
"io"
"strings"
_ "golang.org/x/image/webp"
_ "image/jpeg"
@@ -25,13 +28,38 @@ var rasterFormats = map[string]string{
type CreateImageUseCase struct {
imageRepository image.Repository
storage image.Storage
recorder audit.Recorder
}
func NewCreateImageUseCase(imageRepository image.Repository, storage image.Storage) *CreateImageUseCase {
return &CreateImageUseCase{imageRepository, storage}
func NewCreateImageUseCase(imageRepository image.Repository, storage image.Storage, recorder audit.Recorder) *CreateImageUseCase {
return &CreateImageUseCase{imageRepository, storage, recorder}
}
func (g *CreateImageUseCase) CreateImage(input image.ImageInput) (image.Image, error) {
func (g *CreateImageUseCase) CreateImage(ctx context.Context, input image.ImageInput) (image.Image, error) {
created, err := g.create(input)
event := audit.NewEvent(audit.ActionMediaUpload, audit.CategoryMedia)
if err != nil {
event.Target = attemptedUploadTarget(input)
recordFailure(ctx, g.recorder, event, err)
return image.Image{}, err
}
event.Target = imageTarget(created)
g.recorder.Record(ctx, event)
return created, nil
}
func imageTarget(img image.Image) audit.Target {
return audit.NewTarget(audit.TargetImage, img.ID, img.Filename)
}
func attemptedUploadTarget(input image.ImageInput) audit.Target {
if strings.TrimSpace(input.Filename) == "" {
return audit.Target{}
}
return audit.Target{Type: audit.TargetImage, Name: image.NormalizeUploadFilename(input.Filename, input.ContentType)}
}
func (g *CreateImageUseCase) create(input image.ImageInput) (image.Image, error) {
if !image.IsAllowedContentType(input.ContentType) {
return image.Image{}, image.ErrImageTypeNotAllowed
}