From da44afe02126a9aa7b6f806647750f0bc33f5b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enver=20Bi=C5=A1evac?= Date: Thu, 18 Jul 2024 12:15:31 +0000 Subject: [PATCH] improve audit logs (#2242) * improve audit logs --- app/api/controller/repo/default_branch.go | 2 +- app/api/controller/repo/rule_create.go | 2 +- app/api/controller/repo/rule_delete.go | 2 +- app/api/controller/repo/rule_update.go | 2 +- app/api/controller/repo/update.go | 2 +- audit/audit.go | 23 +++++++++++++++++++++-- 6 files changed, 26 insertions(+), 7 deletions(-) diff --git a/app/api/controller/repo/default_branch.go b/app/api/controller/repo/default_branch.go index 638132057..57d1171b8 100644 --- a/app/api/controller/repo/default_branch.go +++ b/app/api/controller/repo/default_branch.go @@ -103,7 +103,7 @@ func (c *Controller) UpdateDefaultBranch( err = c.auditService.Log(ctx, session.Principal, - audit.NewResource(audit.ResourceTypeRepository, repo.Identifier), + audit.NewResource(audit.ResourceTypeRepositorySettings, repo.Identifier), audit.ActionUpdated, paths.Parent(repo.Path), audit.WithOldObject(audit.RepositoryObject{ diff --git a/app/api/controller/repo/rule_create.go b/app/api/controller/repo/rule_create.go index 0330eda90..af92a9243 100644 --- a/app/api/controller/repo/rule_create.go +++ b/app/api/controller/repo/rule_create.go @@ -118,7 +118,7 @@ func (c *Controller) RuleCreate(ctx context.Context, err = c.auditService.Log(ctx, session.Principal, - audit.NewResource(audit.ResourceTypeBranchRule, r.Identifier), + audit.NewResource(audit.ResourceTypeBranchRule, r.Identifier, audit.RepoName, repo.Identifier), audit.ActionCreated, paths.Parent(repo.Path), audit.WithNewObject(r), diff --git a/app/api/controller/repo/rule_delete.go b/app/api/controller/repo/rule_delete.go index 2d839c577..88feadd92 100644 --- a/app/api/controller/repo/rule_delete.go +++ b/app/api/controller/repo/rule_delete.go @@ -49,7 +49,7 @@ func (c *Controller) RuleDelete(ctx context.Context, err = c.auditService.Log(ctx, session.Principal, - audit.NewResource(audit.ResourceTypeBranchRule, r.Identifier), + audit.NewResource(audit.ResourceTypeBranchRule, r.Identifier, audit.RepoName, repo.Identifier), audit.ActionDeleted, paths.Parent(repo.Path), audit.WithOldObject(r), diff --git a/app/api/controller/repo/rule_update.go b/app/api/controller/repo/rule_update.go index 18632a262..b0c23e527 100644 --- a/app/api/controller/repo/rule_update.go +++ b/app/api/controller/repo/rule_update.go @@ -140,7 +140,7 @@ func (c *Controller) RuleUpdate(ctx context.Context, err = c.auditService.Log(ctx, session.Principal, - audit.NewResource(audit.ResourceTypeBranchRule, r.Identifier), + audit.NewResource(audit.ResourceTypeBranchRule, r.Identifier, audit.RepoName, repo.Identifier), audit.ActionUpdated, paths.Parent(repo.Path), audit.WithOldObject(oldRule), diff --git a/app/api/controller/repo/update.go b/app/api/controller/repo/update.go index a0bd84374..e64980ee7 100644 --- a/app/api/controller/repo/update.go +++ b/app/api/controller/repo/update.go @@ -73,7 +73,7 @@ func (c *Controller) Update(ctx context.Context, err = c.auditService.Log(ctx, session.Principal, - audit.NewResource(audit.ResourceTypeRepository, repo.Identifier), + audit.NewResource(audit.ResourceTypeRepositorySettings, repo.Identifier), audit.ActionUpdated, paths.Parent(repo.Path), audit.WithOldObject(repoClone), diff --git a/audit/audit.go b/audit/audit.go index 3584a919a..869120684 100644 --- a/audit/audit.go +++ b/audit/audit.go @@ -30,6 +30,10 @@ var ( ErrSpacePathIsRequired = errors.New("space path is required") ) +const ( + RepoName = "repoName" +) + type Action string const ( @@ -69,13 +73,20 @@ func (a ResourceType) Validate() error { type Resource struct { Type ResourceType Identifier string + Data map[string]string } -func NewResource(rtype ResourceType, identifier string) Resource { - return Resource{ +func NewResource(rtype ResourceType, identifier string, keyValues ...string) Resource { + r := Resource{ Type: rtype, Identifier: identifier, + Data: make(map[string]string, len(keyValues)), } + for i := 0; i < len(keyValues); i += 2 { + k, v := keyValues[i], keyValues[i+1] + r.Data[k] = v + } + return r } func (r Resource) Validate() error { @@ -88,6 +99,14 @@ func (r Resource) Validate() error { return nil } +func (r Resource) DataAsSlice() []string { + slice := make([]string, 0, len(r.Data)*2) + for k, v := range r.Data { + slice = append(slice, k, v) + } + return slice +} + type DiffObject struct { OldObject any NewObject any