feat: activity log producers
This commit is contained in:
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
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user