summaryrefslogtreecommitdiffstats
path: root/app/command_invite.go
diff options
context:
space:
mode:
authorCarlos Tadeu Panato Junior <ctadeu@gmail.com>2018-05-02 16:07:26 +0200
committerSaturnino Abril <saturnino.abril@gmail.com>2018-05-02 22:07:26 +0800
commit1647614fc95b0cb9dd5c4c5699f4f7fbba0bee43 (patch)
tree6dc4f8253cdbd8ed65cf6e2ab482001056a6e131 /app/command_invite.go
parent529807c1ba0c6b5e697d95d35b46865e22b0e62a (diff)
downloadchat-1647614fc95b0cb9dd5c4c5699f4f7fbba0bee43.tar.gz
chat-1647614fc95b0cb9dd5c4c5699f4f7fbba0bee43.tar.bz2
chat-1647614fc95b0cb9dd5c4c5699f4f7fbba0bee43.zip
[MM-10415] Reorder checks for command invite (#8701)
Diffstat (limited to 'app/command_invite.go')
-rw-r--r--app/command_invite.go16
1 files changed, 7 insertions, 9 deletions
diff --git a/app/command_invite.go b/app/command_invite.go
index 9045365ad..4b76c0c45 100644
--- a/app/command_invite.go
+++ b/app/command_invite.go
@@ -4,7 +4,6 @@
package app
import (
- "fmt"
"strings"
"github.com/mattermost/mattermost-server/mlog"
@@ -42,8 +41,6 @@ func (me *InviteProvider) DoCommand(a *App, args *model.CommandArgs, message str
return &model.CommandResponse{Text: args.T("api.command_invite.missing_message.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- mlog.Debug(fmt.Sprint(message))
-
splitMessage := strings.SplitN(message, " ", 2)
targetUsername := splitMessage[0]
targetUsername = strings.TrimPrefix(targetUsername, "@")
@@ -77,12 +74,7 @@ func (me *InviteProvider) DoCommand(a *App, args *model.CommandArgs, message str
return &model.CommandResponse{Text: args.T("api.command_invite.directchannel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
- // Check if user is already in the channel
- _, err = a.GetChannelMember(channelToJoin.Id, userProfile.Id)
- if err == nil {
- return &model.CommandResponse{Text: args.T("api.command_invite.user_already_in_channel.app_error", map[string]interface{}{"User": userProfile.Username}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
- }
-
+ // Check Permissions
if channelToJoin.Type == model.CHANNEL_OPEN && !a.SessionHasPermissionToChannel(args.Session, channelToJoin.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
return &model.CommandResponse{Text: args.T("api.command_invite.permission.app_error", map[string]interface{}{"User": userProfile.Username, "Channel": channelToJoin.Name}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
@@ -91,6 +83,12 @@ func (me *InviteProvider) DoCommand(a *App, args *model.CommandArgs, message str
return &model.CommandResponse{Text: args.T("api.command_invite.permission.app_error", map[string]interface{}{"User": userProfile.Username, "Channel": channelToJoin.Name}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}
+ // Check if user is already in the channel
+ _, err = a.GetChannelMember(channelToJoin.Id, userProfile.Id)
+ if err == nil {
+ return &model.CommandResponse{Text: args.T("api.command_invite.user_already_in_channel.app_error", map[string]interface{}{"User": userProfile.Username}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ }
+
if _, err := a.AddChannelMember(userProfile.Id, channelToJoin, args.Session.UserId, ""); err != nil {
return &model.CommandResponse{Text: args.T("api.command_invite.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
}