From 0422af2a11e00dd6b0808530c3ad1ba398920f19 Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Mon, 19 Sep 2022 16:49:04 +0200 Subject: [PATCH] handle spaceshared event Signed-off-by: Christian Richter --- services/audit/pkg/types/events.go | 1 + services/notifications/pkg/command/server.go | 2 ++ .../email/templates/sharedSpace.email.tmpl | 4 ++- services/notifications/pkg/service/service.go | 31 +++++++++++++------ 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/services/audit/pkg/types/events.go b/services/audit/pkg/types/events.go index 2fe9d9aef6..02c6dfa669 100644 --- a/services/audit/pkg/types/events.go +++ b/services/audit/pkg/types/events.go @@ -29,6 +29,7 @@ func RegisteredEvents() []events.Unmarshaller { events.SpaceEnabled{}, events.SpaceDisabled{}, events.SpaceDeleted{}, + events.SpaceShared{}, events.UserCreated{}, events.UserDeleted{}, events.UserFeatureChanged{}, diff --git a/services/notifications/pkg/command/server.go b/services/notifications/pkg/command/server.go index 0309289502..5387cbbbe3 100644 --- a/services/notifications/pkg/command/server.go +++ b/services/notifications/pkg/command/server.go @@ -28,8 +28,10 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := logging.Configure(cfg.Service.Name, cfg.Log) + // evs defines a list of events to subscribe to evs := []events.Unmarshaller{ events.ShareCreated{}, + events.SpaceShared{}, } evtsCfg := cfg.Notifications.Events diff --git a/services/notifications/pkg/email/templates/sharedSpace.email.tmpl b/services/notifications/pkg/email/templates/sharedSpace.email.tmpl index f70ec9a4cb..6ded0d6773 100644 --- a/services/notifications/pkg/email/templates/sharedSpace.email.tmpl +++ b/services/notifications/pkg/email/templates/sharedSpace.email.tmpl @@ -1 +1,3 @@ -{{ .SpaceSharer }} has invited you to join {{ .SpaceName }} \ No newline at end of file +{{ .SpaceSharer }} has invited you to join {{ .SpaceName }} + +Link: {{ .ShareLink }} \ No newline at end of file diff --git a/services/notifications/pkg/service/service.go b/services/notifications/pkg/service/service.go index dc23e38867..f52dd9c986 100644 --- a/services/notifications/pkg/service/service.go +++ b/services/notifications/pkg/service/service.go @@ -73,7 +73,7 @@ func (s eventsNotifier) Run() error { func (s eventsNotifier) handleSpaceShared(e events.SpaceShared) { userResponse, err := s.gwClient.GetUser(context.Background(), &userv1beta1.GetUserRequest{ - UserId: e.Owner, + UserId: e.Creator, }) if err != nil || userResponse.Status.Code != rpcv1beta1.Code_CODE_OK { s.logger.Error(). @@ -120,7 +120,8 @@ func (s eventsNotifier) handleSpaceShared(e events.SpaceShared) { Ref: &providerv1beta1.Reference{ ResourceId: &resourceID, }, - FieldMask: &fieldmaskpb.FieldMask{Paths: []string{"name"}}, + // TODO: this filter needs to be implemented + //FieldMask: &fieldmaskpb.FieldMask{Paths: []string{"space.name"}}, }) if err != nil || md.Status.Code != rpcv1beta1.Code_CODE_OK { @@ -142,11 +143,21 @@ func (s eventsNotifier) handleSpaceShared(e events.SpaceShared) { return } - // old code + shareLink, err := url.JoinPath(e.Executant.Idp, "files/spaces/projects", storagespace.FormatResourceID(*e.ID)) + + if err != nil { + s.logger.Error(). + Err(err). + Str("event", "ShareCreated"). + Msg("could not create link to the share") + return + } + msg, err := email.RenderEmailTemplate("sharedSpace.email.tmpl", map[string]string{ // TODO: add additional fields here (like link etc.) - "SpaceSharer": "spacesharer", - "SpaceName": md.Info.Space.Name, + "SpaceSharer": userResponse.GetUser().DisplayName, + "SpaceName": md.GetInfo().GetSpace().Name, + "ShareLink": shareLink, }, s.emailTemplatePath) if err != nil { @@ -155,8 +166,10 @@ func (s eventsNotifier) handleSpaceShared(e events.SpaceShared) { Str("event", "SpaceCreated"). Msg("Could not render E-Mail template for spaces") } - if e.Executant != nil { - err = s.channel.SendMessage([]string{e.Executant.OpaqueId}, msg, "You were invited to join a space") + if e.GranteeUserID != nil { + err = s.channel.SendMessage([]string{e.GranteeUserID.OpaqueId}, msg, "You have received a share.") + } else if e.GranteeGroupID != nil { + err = s.channel.SendMessageToGroup(e.GranteeGroupID, msg, "You have received a share.") } if err != nil { s.logger.Error(). @@ -241,8 +254,8 @@ func (s eventsNotifier) handleShareCreated(e events.ShareCreated) { msg, err := email.RenderEmailTemplate("shareCreated.email.tmpl", map[string]string{ // TODO: add additional fields here (like link etc.) - "ShareSharer": userResponse.User.DisplayName, - "ShareFolder": md.Info.Name, + "ShareSharer": userResponse.GetUser().DisplayName, + "ShareFolder": md.GetInfo().Name, "ShareLink": shareLink, }, s.emailTemplatePath)