[MM-21115] Add permissions check on user_typing event (#13373)

* Add permissions check on user_typing event

* Fix test
Этот коммит содержится в:
Claudio Costa
2019-12-11 20:18:36 +01:00
коммит произвёл GitHub
родитель 637d9e0ea6
Коммит acb19f640b
4 изменённых файлов: 29 добавлений и 12 удалений

Просмотреть файл

@@ -39,6 +39,7 @@ type TestHelper struct {
BasicTeam *model.Team BasicTeam *model.Team
BasicChannel *model.Channel BasicChannel *model.Channel
BasicPrivateChannel *model.Channel BasicPrivateChannel *model.Channel
BasicPrivateChannel2 *model.Channel
BasicDeletedChannel *model.Channel BasicDeletedChannel *model.Channel
BasicChannel2 *model.Channel BasicChannel2 *model.Channel
BasicPost *model.Post BasicPost *model.Post
@@ -193,6 +194,7 @@ func (me *TestHelper) InitBasic() *TestHelper {
me.BasicTeam = me.CreateTeam() me.BasicTeam = me.CreateTeam()
me.BasicChannel = me.CreatePublicChannel() me.BasicChannel = me.CreatePublicChannel()
me.BasicPrivateChannel = me.CreatePrivateChannel() me.BasicPrivateChannel = me.CreatePrivateChannel()
me.BasicPrivateChannel2 = me.CreatePrivateChannel()
me.BasicDeletedChannel = me.CreatePublicChannel() me.BasicDeletedChannel = me.CreatePublicChannel()
me.BasicChannel2 = me.CreatePublicChannel() me.BasicChannel2 = me.CreatePublicChannel()
me.BasicPost = me.CreatePost() me.BasicPost = me.CreatePost()

Просмотреть файл

@@ -850,7 +850,7 @@ func TestGetAllChannelsWithCount(t *testing.T) {
for _, c := range *channels { for _, c := range *channels {
require.NotEqual(t, c.TeamId, "") require.NotEqual(t, c.TeamId, "")
} }
require.Equal(t, int64(5), total) require.Equal(t, int64(6), total)
channels, _, resp = th.SystemAdminClient.GetAllChannelsWithCount(0, 10, "") channels, _, resp = th.SystemAdminClient.GetAllChannelsWithCount(0, 10, "")
CheckNoError(t, resp) CheckNoError(t, resp)

Просмотреть файл

@@ -64,6 +64,17 @@ func TestWebSocket(t *testing.T) {
resp = <-WebSocketClient.ResponseChannel resp = <-WebSocketClient.ResponseChannel
require.Equal(t, resp.Error.Id, "api.websocket_handler.invalid_param.app_error", "should have been invalid param response") require.Equal(t, resp.Error.Id, "api.websocket_handler.invalid_param.app_error", "should have been invalid param response")
require.Equal(t, resp.Error.DetailedError, "", "detailed error not cleared") require.Equal(t, resp.Error.DetailedError, "", "detailed error not cleared")
WebSocketClient.UserTyping(th.BasicChannel.Id, "")
time.Sleep(300 * time.Millisecond)
resp = <-WebSocketClient.ResponseChannel
require.Nil(t, resp.Error)
WebSocketClient.UserTyping(th.BasicPrivateChannel2.Id, "")
time.Sleep(300 * time.Millisecond)
resp = <-WebSocketClient.ResponseChannel
require.Equal(t, resp.Error.Id, "api.websocket_handler.invalid_param.app_error", "should have been invalid param response")
require.Equal(t, resp.Error.DetailedError, "", "detailed error not cleared")
} }
func TestWebSocketTrailingSlash(t *testing.T) { func TestWebSocketTrailingSlash(t *testing.T) {

Просмотреть файл

@@ -24,6 +24,10 @@ func (api *API) userTyping(req *model.WebSocketRequest) (map[string]interface{},
return nil, NewInvalidWebSocketParamError(req.Action, "channel_id") return nil, NewInvalidWebSocketParamError(req.Action, "channel_id")
} }
if !api.App.SessionHasPermissionToChannel(req.Session, channelId, model.PERMISSION_CREATE_POST) {
return nil, NewInvalidWebSocketParamError(req.Action, "channel_id")
}
var parentId string var parentId string
if parentId, ok = req.Data["parent_id"].(string); !ok { if parentId, ok = req.Data["parent_id"].(string); !ok {
parentId = "" parentId = ""