diff options
Diffstat (limited to 'app/team.go')
-rw-r--r-- | app/team.go | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/app/team.go b/app/team.go index d9f19fab8..ff1037b7c 100644 --- a/app/team.go +++ b/app/team.go @@ -17,6 +17,7 @@ import ( "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" + "github.com/mattermost/mattermost-server/plugin" "github.com/mattermost/mattermost-server/utils" ) @@ -429,12 +430,28 @@ func (a *App) joinUserToTeam(team *model.Team, user *model.User) (*model.TeamMem } func (a *App) JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError { - if _, alreadyAdded, err := a.joinUserToTeam(team, user); err != nil { + tm, alreadyAdded, err := a.joinUserToTeam(team, user) + if err != nil { return err } else if alreadyAdded { return nil } + if a.PluginsReady() { + var actor *model.User + if userRequestorId != "" { + actor, err = a.GetUser(userRequestorId) + } + + a.Go(func() { + pluginContext := &plugin.Context{} + a.Plugins.RunMultiPluginHook(func(hooks plugin.Hooks) bool { + hooks.UserHasJoinedTeam(pluginContext, tm, actor) + return true + }, plugin.UserHasJoinedTeamId) + }) + } + if uua := <-a.Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil { return uua.Err } @@ -575,9 +592,8 @@ func (a *App) AddTeamMember(teamId, userId string) (*model.TeamMember, *model.Ap return nil, err } - var teamMember *model.TeamMember - var err *model.AppError - if teamMember, err = a.GetTeamMember(teamId, userId); err != nil { + teamMember, err := a.GetTeamMember(teamId, userId) + if err != nil { return nil, err } @@ -692,10 +708,8 @@ func (a *App) RemoveUserFromTeam(teamId string, userId string, requestorId strin } func (a *App) LeaveTeam(team *model.Team, user *model.User, requestorId string) *model.AppError { - var teamMember *model.TeamMember - var err *model.AppError - - if teamMember, err = a.GetTeamMember(team.Id, user.Id); err != nil { + teamMember, err := a.GetTeamMember(team.Id, user.Id) + if err != nil { return model.NewAppError("LeaveTeam", "api.team.remove_user_from_team.missing.app_error", nil, err.Error(), http.StatusBadRequest) } @@ -753,6 +767,21 @@ func (a *App) LeaveTeam(team *model.Team, user *model.User, requestorId string) return result.Err } + if a.PluginsReady() { + var actor *model.User + if requestorId != "" { + actor, err = a.GetUser(requestorId) + } + + a.Go(func() { + pluginContext := &plugin.Context{} + a.Plugins.RunMultiPluginHook(func(hooks plugin.Hooks) bool { + hooks.UserHasLeftTeam(pluginContext, teamMember, actor) + return true + }, plugin.UserHasLeftTeamId) + }) + } + if uua := <-a.Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil { return uua.Err } |