summaryrefslogtreecommitdiffstats
path: root/app/webhook.go
diff options
context:
space:
mode:
authorJesse Hallam <jesse.hallam@gmail.com>2018-01-02 11:41:23 -0500
committerChristopher Speller <crspeller@gmail.com>2018-01-02 08:41:23 -0800
commite9fe9f50dd5839a7cf0926a2d97e88a19c9b831e (patch)
tree87073ea7310a356b4f2d78a5b5f569730ef89257 /app/webhook.go
parentb902e4eea9732573d3a3dc9f6a62ca7029cac409 (diff)
downloadchat-e9fe9f50dd5839a7cf0926a2d97e88a19c9b831e.tar.gz
chat-e9fe9f50dd5839a7cf0926a2d97e88a19c9b831e.tar.bz2
chat-e9fe9f50dd5839a7cf0926a2d97e88a19c9b831e.zip
[PLT-8173] Add username and profile picture to webhook set up pages (#8002)
Diffstat (limited to 'app/webhook.go')
-rw-r--r--app/webhook.go33
1 files changed, 31 insertions, 2 deletions
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