From 1647614fc95b0cb9dd5c4c5699f4f7fbba0bee43 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Wed, 2 May 2018 16:07:26 +0200 Subject: [MM-10415] Reorder checks for command invite (#8701) --- app/command_invite.go | 16 +++++++--------- 1 file 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} } -- cgit v1.2.3-1-g7c22