diff options
author | Carlos Tadeu Panato Junior <ctadeu@gmail.com> | 2018-05-02 16:07:26 +0200 |
---|---|---|
committer | Saturnino Abril <saturnino.abril@gmail.com> | 2018-05-02 22:07:26 +0800 |
commit | 1647614fc95b0cb9dd5c4c5699f4f7fbba0bee43 (patch) | |
tree | 6dc4f8253cdbd8ed65cf6e2ab482001056a6e131 /app/command_invite.go | |
parent | 529807c1ba0c6b5e697d95d35b46865e22b0e62a (diff) | |
download | chat-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.go | 16 |
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} } |