diff options
author | Carlos Tadeu Panato Junior <ctadeu@gmail.com> | 2017-04-03 14:12:50 +0200 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2017-04-03 08:12:50 -0400 |
commit | 88b8df314673ceae08a37a6472296448e83d7442 (patch) | |
tree | ca1e646bbc3daf4f47cb8404d35305a74230f2e6 /api4/command.go | |
parent | 67a8770118a7e8902efe537c4257b7442cb651fd (diff) | |
download | chat-88b8df314673ceae08a37a6472296448e83d7442.tar.gz chat-88b8df314673ceae08a37a6472296448e83d7442.tar.bz2 chat-88b8df314673ceae08a37a6472296448e83d7442.zip |
implement GET /commands (#5865)
Diffstat (limited to 'api4/command.go')
-rw-r--r-- | api4/command.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/api4/command.go b/api4/command.go index 64766ef3c..41a85eac3 100644 --- a/api4/command.go +++ b/api4/command.go @@ -5,6 +5,7 @@ package api4 import ( "net/http" + "strconv" l4g "github.com/alecthomas/log4go" "github.com/mattermost/platform/app" @@ -16,6 +17,7 @@ func InitCommand() { l4g.Debug(utils.T("api.command.init.debug")) BaseRoutes.Commands.Handle("", ApiSessionRequired(createCommand)).Methods("POST") + BaseRoutes.Commands.Handle("", ApiSessionRequired(listCommands)).Methods("GET") } func createCommand(c *Context, w http.ResponseWriter, r *http.Request) { @@ -44,3 +46,48 @@ func createCommand(c *Context, w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusCreated) w.Write([]byte(rcmd.ToJson())) } + +func listCommands(c *Context, w http.ResponseWriter, r *http.Request) { + customOnly, failConv := strconv.ParseBool(r.URL.Query().Get("custom_only")) + if failConv != nil { + customOnly = false + } + + teamId := r.URL.Query().Get("team_id") + + if len(teamId) == 0 { + c.SetInvalidParam("team_id") + return + } + + commands := []*model.Command{} + err := &model.AppError{} + if customOnly { + if !app.SessionHasPermissionToTeam(c.Session, teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { + c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS) + return + } + commands, err = app.ListTeamCommands(teamId) + if err != nil { + c.Err = err + return + } + } else { + //User with no permission should see only system commands + if !app.SessionHasPermissionToTeam(c.Session, teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { + commands, err = app.ListAutocompleteCommands(teamId, c.T) + if err != nil { + c.Err = err + return + } + } else { + commands, err = app.ListAllCommands(teamId, c.T) + if err != nil { + c.Err = err + return + } + } + } + + w.Write([]byte(model.CommandListToJson(commands))) +} |