From e9fe9f50dd5839a7cf0926a2d97e88a19c9b831e Mon Sep 17 00:00:00 2001 From: Jesse Hallam Date: Tue, 2 Jan 2018 11:41:23 -0500 Subject: [PLT-8173] Add username and profile picture to webhook set up pages (#8002) --- app/webhook.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'app/webhook.go') diff --git a/app/webhook.go b/app/webhook.go index ba513def5..5ed71e992 100644 --- a/app/webhook.go +++ b/app/webhook.go @@ -277,6 +277,17 @@ func (a *App) CreateIncomingWebhookForChannel(creatorId string, channel *model.C hook.UserId = creatorId hook.TeamId = channel.TeamId + if !a.Config().ServiceSettings.EnablePostUsernameOverride { + hook.PostUsername = "" + } + if !a.Config().ServiceSettings.EnablePostIconOverride { + hook.PostIconURL = "" + } + + if hook.PostUsername != "" && !model.IsValidUsername(hook.PostUsername) { + return nil, model.NewAppError("CreateIncomingWebhookForChannel", "api.incoming_webhook.invalid_post_username.app_error", nil, "", http.StatusBadRequest) + } + if result := <-a.Srv.Store.Webhook().SaveIncoming(hook); result.Err != nil { return nil, result.Err } else { @@ -289,6 +300,17 @@ func (a *App) UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) return nil, model.NewAppError("UpdateIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) } + if !a.Config().ServiceSettings.EnablePostUsernameOverride { + updatedHook.PostUsername = oldHook.PostUsername + } + if !a.Config().ServiceSettings.EnablePostIconOverride { + updatedHook.PostIconURL = oldHook.PostIconURL + } + + if updatedHook.PostUsername != "" && !model.IsValidUsername(updatedHook.PostUsername) { + return nil, model.NewAppError("UpdateIncomingWebhook", "api.incoming_webhook.invalid_post_username.app_error", nil, "", http.StatusBadRequest) + } + updatedHook.Id = oldHook.Id updatedHook.UserId = oldHook.UserId updatedHook.CreateAt = oldHook.CreateAt @@ -608,8 +630,15 @@ func (a *App) HandleIncomingWebhook(hookId string, req *model.IncomingWebhookReq return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.permissions.app_error", nil, "", http.StatusForbidden) } - overrideUsername := req.Username - overrideIconUrl := req.IconURL + overrideUsername := hook.PostUsername + if req.Username != "" { + overrideUsername = req.Username + } + + overrideIconUrl := hook.PostIconURL + if req.IconURL != "" { + overrideIconUrl = req.IconURL + } _, err := a.CreateWebhookPost(hook.UserId, channel, text, overrideUsername, overrideIconUrl, req.Props, webhookType, "") return err -- cgit v1.2.3-1-g7c22