summaryrefslogtreecommitdiffstats
path: root/web/web.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2015-10-05 11:48:10 -0400
committerJoram Wilander <jwawilander@gmail.com>2015-10-05 11:48:10 -0400
commitb591c4b32ee7cb5ea54738f9cb2bcb95b9583496 (patch)
treed5494bbc684888994531fd433f6b78b62fb0080a /web/web.go
parent5d3649b5a478766261832e83236d7cb80e490f8b (diff)
parentef55d7f244cb727402a7c0a570efd719e794cf66 (diff)
downloadchat-b591c4b32ee7cb5ea54738f9cb2bcb95b9583496.tar.gz
chat-b591c4b32ee7cb5ea54738f9cb2bcb95b9583496.tar.bz2
chat-b591c4b32ee7cb5ea54738f9cb2bcb95b9583496.zip
Merge pull request #914 from mattermost/plt-297
PLT-297 Add ability to override username and icon for posts from incoming webhooks.
Diffstat (limited to 'web/web.go')
-rw-r--r--web/web.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/web/web.go b/web/web.go
index e440699b2..a1bbf5a81 100644
--- a/web/web.go
+++ b/web/web.go
@@ -884,6 +884,12 @@ func getAccessToken(c *api.Context, w http.ResponseWriter, r *http.Request) {
}
func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) {
+ if !utils.Cfg.ServiceSettings.EnableIncomingWebhooks {
+ c.Err = model.NewAppError("incomingWebhook", "Incoming webhooks have been disabled by the system admin.", "")
+ c.Err.StatusCode = http.StatusNotImplemented
+ return
+ }
+
params := mux.Vars(r)
id := params["id"]
@@ -906,6 +912,9 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) {
channelName := props["channel"]
+ overrideUsername := props["username"]
+ overrideIconUrl := props["icon_url"]
+
var hook *model.IncomingWebhook
if result := <-hchan; result.Err != nil {
c.Err = model.NewAppError("incomingWebhook", "Invalid webhook", "err="+result.Err.Message)
@@ -951,6 +960,15 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) {
pchan := api.Srv.Store.Channel().CheckPermissionsTo(hook.TeamId, channel.Id, hook.UserId)
post := &model.Post{UserId: hook.UserId, ChannelId: channel.Id, Message: text}
+ post.AddProp("from_webhook", "true")
+
+ if len(overrideUsername) != 0 && utils.Cfg.ServiceSettings.EnablePostUsernameOverride {
+ post.AddProp("override_username", overrideUsername)
+ }
+
+ if len(overrideIconUrl) != 0 && utils.Cfg.ServiceSettings.EnablePostIconOverride {
+ post.AddProp("override_icon_url", overrideIconUrl)
+ }
if !c.HasPermissionsToChannel(pchan, "createIncomingHook") && channel.Type != model.CHANNEL_OPEN {
c.Err = model.NewAppError("incomingWebhook", "Inappropriate channel permissions", "")