mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-31 01:10:20 -06:00
enhancement(audit): observe the ScienceMeshInviteTokenGenerated event in the audit service
This commit is contained in:
@@ -109,6 +109,8 @@ func StartAuditLogger(ctx context.Context, ch <-chan events.Event, log log.Logge
|
||||
auditEvent = types.GroupMemberAdded(ev)
|
||||
case events.GroupMemberRemoved:
|
||||
auditEvent = types.GroupMemberRemoved(ev)
|
||||
case events.ScienceMeshInviteTokenGenerated:
|
||||
auditEvent = types.ScienceMeshInviteTokenGenerated(ev)
|
||||
default:
|
||||
log.Error().Interface("event", ev).Msg(fmt.Sprintf("can't handle event of type '%T'", ev))
|
||||
continue
|
||||
|
||||
@@ -5,10 +5,11 @@ import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/cs3org/reva/v2/pkg/events"
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/log"
|
||||
"github.com/owncloud/ocis/v2/services/audit/pkg/types"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
group "github.com/cs3org/go-cs3apis/cs3/identity/group/v1beta1"
|
||||
user "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
|
||||
@@ -558,6 +559,33 @@ var testCases = []struct {
|
||||
checkSpacesAuditEvent(t, ev.AuditEventSpaces, "storage-1$space-123")
|
||||
},
|
||||
},
|
||||
{
|
||||
Alias: "ScienceMesh - InviteTokenGenerated",
|
||||
SystemEvent: events.Event{
|
||||
Event: events.ScienceMeshInviteTokenGenerated{
|
||||
Sharer: userID("sharer-user-id"),
|
||||
RecipientMail: "mail@ocis.test",
|
||||
Token: "token-123",
|
||||
Description: "some-description",
|
||||
Expiration: uint64(10e8),
|
||||
InviteLink: "http://ocis.test/invite",
|
||||
Timestamp: timestamp(10e8),
|
||||
},
|
||||
},
|
||||
CheckAuditEvent: func(t *testing.T, b []byte) {
|
||||
ev := types.AuditEventScienceMeshInviteTokenGenerated{}
|
||||
require.NoError(t, json.Unmarshal(b, &ev))
|
||||
|
||||
// AuditEvent fields
|
||||
checkBaseAuditEvent(t, ev.AuditEvent, "sharer-user-id", "2001-09-09T01:46:40Z", "user 'sharer-user-id' generated a ScienceMesh invite with token 'token-123'", "science_mesh_invite_token_generated")
|
||||
// AuditEventScienceMeshInviteTokenGenerated fields
|
||||
require.Equal(t, "mail@ocis.test", ev.RecipientMail)
|
||||
require.Equal(t, "token-123", ev.Token)
|
||||
require.Equal(t, "some-description", ev.Description)
|
||||
require.Equal(t, uint64(10e8), ev.Expiration)
|
||||
require.Equal(t, "http://ocis.test/invite", ev.InviteLink)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
func TestAuditLogging(t *testing.T) {
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
user "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
|
||||
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
|
||||
types "github.com/cs3org/go-cs3apis/cs3/types/v1beta1"
|
||||
|
||||
sdk "github.com/cs3org/reva/v2/pkg/sdk/common"
|
||||
)
|
||||
|
||||
@@ -505,6 +506,20 @@ func GroupMemberRemoved(ev events.GroupMemberRemoved) AuditEventGroupMemberRemov
|
||||
}
|
||||
}
|
||||
|
||||
// ScienceMeshInviteTokenGenerated converts a ScienceMeshInviteTokenGenerated event to an AuditEventScienceMeshInviteTokenGenerated
|
||||
func ScienceMeshInviteTokenGenerated(ev events.ScienceMeshInviteTokenGenerated) AuditEventScienceMeshInviteTokenGenerated {
|
||||
msg := MessageScienceMeshInviteTokenGenerated(ev.Sharer.GetOpaqueId(), ev.Token)
|
||||
base := BasicAuditEvent(ev.Sharer.GetOpaqueId(), formatTime(ev.Timestamp), msg, ActionScienceMeshInviteTokenGenerated)
|
||||
return AuditEventScienceMeshInviteTokenGenerated{
|
||||
AuditEvent: base,
|
||||
RecipientMail: ev.RecipientMail,
|
||||
Token: ev.Token,
|
||||
Description: ev.Description,
|
||||
Expiration: ev.Expiration,
|
||||
InviteLink: ev.InviteLink,
|
||||
}
|
||||
}
|
||||
|
||||
func extractGrantee(uid *user.UserId, gid *group.GroupId) (string, string) {
|
||||
switch {
|
||||
case uid != nil && uid.OpaqueId != "":
|
||||
|
||||
@@ -40,5 +40,6 @@ func RegisteredEvents() []events.Unmarshaller {
|
||||
events.GroupMemberAdded{},
|
||||
events.GroupMemberRemoved{},
|
||||
events.BackchannelLogout{},
|
||||
events.ScienceMeshInviteTokenGenerated{},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,9 @@ const (
|
||||
ActionGroupDeleted = "group_deleted"
|
||||
ActionGroupMemberAdded = "group_member_added"
|
||||
ActionGroupMemberRemoved = "group_member_removed"
|
||||
|
||||
// ScienceMesh
|
||||
ActionScienceMeshInviteTokenGenerated = "science_mesh_invite_token_generated"
|
||||
)
|
||||
|
||||
// MessageShareCreated returns the human-readable string that describes the action
|
||||
@@ -234,3 +237,8 @@ func MessageGroupMemberAdded(executant, userID, groupID string) string {
|
||||
func MessageGroupMemberRemoved(executant, userID, groupID string) string {
|
||||
return fmt.Sprintf("user '%s' added user '%s' was removed from group '%s'", executant, userID, groupID)
|
||||
}
|
||||
|
||||
// MessageScienceMeshInviteTokenGenerated returns the human-readable string that describes the action
|
||||
func MessageScienceMeshInviteTokenGenerated(user, token string) string {
|
||||
return fmt.Sprintf("user '%s' generated a ScienceMesh invite with token '%s'", user, token)
|
||||
}
|
||||
|
||||
@@ -274,3 +274,13 @@ type AuditEventGroupMemberRemoved struct {
|
||||
GroupID string
|
||||
UserID string
|
||||
}
|
||||
|
||||
// AuditEventScienceMeshInviteTokenGenerated is the event logged when a ScienceMesh invite token is generated
|
||||
type AuditEventScienceMeshInviteTokenGenerated struct {
|
||||
AuditEvent
|
||||
RecipientMail string
|
||||
Token string
|
||||
Description string
|
||||
Expiration uint64
|
||||
InviteLink string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user