diff options
author | George Goldberg <george@gberg.me> | 2017-04-04 18:19:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-04 18:19:42 +0100 |
commit | 32460bf63bc07c69ee5da0bb5640b879facb5538 (patch) | |
tree | 2ee6abc94175823632e9f9ab40172948fcfa0f85 | |
parent | 0b5c0794fdcbb551c1233dcdfbdf5c7deb585fd6 (diff) | |
download | chat-32460bf63bc07c69ee5da0bb5640b879facb5538.tar.gz chat-32460bf63bc07c69ee5da0bb5640b879facb5538.tar.bz2 chat-32460bf63bc07c69ee5da0bb5640b879facb5538.zip |
PLT-6198: Use added to channel system message on default channels. (#5969)
Use a different sytem message when a user was added to a default channel
by someone else than when they joined themselves.
-rw-r--r-- | api/apitestlib.go | 2 | ||||
-rw-r--r-- | api/team.go | 2 | ||||
-rw-r--r-- | api4/apitestlib.go | 2 | ||||
-rw-r--r-- | api4/team.go | 2 | ||||
-rw-r--r-- | app/apptestlib.go | 2 | ||||
-rw-r--r-- | app/channel.go | 31 | ||||
-rw-r--r-- | app/import.go | 2 | ||||
-rw-r--r-- | app/slackimport.go | 2 | ||||
-rw-r--r-- | app/team.go | 22 | ||||
-rw-r--r-- | app/team_test.go | 2 | ||||
-rw-r--r-- | app/user.go | 4 | ||||
-rw-r--r-- | cmd/platform/team.go | 2 | ||||
-rw-r--r-- | web/web_test.go | 2 |
13 files changed, 49 insertions, 28 deletions
diff --git a/api/apitestlib.go b/api/apitestlib.go index e6d57503f..f65d4e5a9 100644 --- a/api/apitestlib.go +++ b/api/apitestlib.go @@ -163,7 +163,7 @@ func (me *TestHelper) CreateUser(client *model.Client) *model.User { func LinkUserToTeam(user *model.User, team *model.Team) { utils.DisableDebugLogForTest() - err := app.JoinUserToTeam(team, user) + err := app.JoinUserToTeam(team, user, "") if err != nil { l4g.Error(err.Error()) l4g.Close() diff --git a/api/team.go b/api/team.go index ed46947a4..899948a94 100644 --- a/api/team.go +++ b/api/team.go @@ -153,7 +153,7 @@ func addUserToTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } - if _, err := app.AddUserToTeam(c.TeamId, userId); err != nil { + if _, err := app.AddUserToTeam(c.TeamId, userId, ""); err != nil { c.Err = err return } diff --git a/api4/apitestlib.go b/api4/apitestlib.go index eaeb827fc..bd36f49cc 100644 --- a/api4/apitestlib.go +++ b/api4/apitestlib.go @@ -362,7 +362,7 @@ func (me *TestHelper) UpdateActiveUser(user *model.User, active bool) { func LinkUserToTeam(user *model.User, team *model.Team) { utils.DisableDebugLogForTest() - err := app.JoinUserToTeam(team, user) + err := app.JoinUserToTeam(team, user, "") if err != nil { l4g.Error(err.Error()) l4g.Close() diff --git a/api4/team.go b/api4/team.go index 9bde841ab..22ab15bfd 100644 --- a/api4/team.go +++ b/api4/team.go @@ -407,7 +407,7 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) { return } - members, err = app.AddTeamMembers(c.Params.TeamId, userIds) + members, err = app.AddTeamMembers(c.Params.TeamId, userIds, c.Session.UserId) if err != nil { c.Err = err diff --git a/app/apptestlib.go b/app/apptestlib.go index 41e234130..52530f92f 100644 --- a/app/apptestlib.go +++ b/app/apptestlib.go @@ -174,7 +174,7 @@ func (me *TestHelper) CreatePost(channel *model.Channel) *model.Post { func LinkUserToTeam(user *model.User, team *model.Team) { utils.DisableDebugLogForTest() - err := JoinUserToTeam(team, user) + err := JoinUserToTeam(team, user, "") if err != nil { l4g.Error(err.Error()) l4g.Close() diff --git a/app/channel.go b/app/channel.go index c1e0afce9..1c04905c2 100644 --- a/app/channel.go +++ b/app/channel.go @@ -32,9 +32,18 @@ func CreateDefaultChannels(teamId string) ([]*model.Channel, *model.AppError) { return channels, nil } -func JoinDefaultChannels(teamId string, user *model.User, channelRole string) *model.AppError { +func JoinDefaultChannels(teamId string, user *model.User, channelRole string, userRequestorId string) *model.AppError { var err *model.AppError = nil + var requestor *model.User + if userRequestorId != "" { + if u := <-Srv.Store.User().Get(userRequestorId); u.Err != nil { + return u.Err + } else { + requestor = u.Data.(*model.User) + } + } + if result := <-Srv.Store.Channel().GetByName(teamId, "town-square", true); result.Err != nil { err = result.Err } else { @@ -47,8 +56,14 @@ func JoinDefaultChannels(teamId string, user *model.User, channelRole string) *m err = cmResult.Err } - if err := postJoinChannelMessage(user, townSquare); err != nil { - l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + if requestor == nil { + if err := postJoinChannelMessage(user, townSquare); err != nil { + l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + } + } else { + if err := PostAddToChannelMessage(requestor, user, townSquare); err != nil { + l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + } } InvalidateCacheForChannelMembers(result.Data.(*model.Channel).Id) @@ -66,8 +81,14 @@ func JoinDefaultChannels(teamId string, user *model.User, channelRole string) *m err = cmResult.Err } - if err := postJoinChannelMessage(user, offTopic); err != nil { - l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + if requestor == nil { + if err := postJoinChannelMessage(user, offTopic); err != nil { + l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + } + } else { + if err := PostAddToChannelMessage(requestor, user, offTopic); err != nil { + l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) + } } InvalidateCacheForChannelMembers(result.Data.(*model.Channel).Id) diff --git a/app/import.go b/app/import.go index 8d1173c31..6bf4e8a89 100644 --- a/app/import.go +++ b/app/import.go @@ -865,7 +865,7 @@ func OldImportUser(team *model.Team, user *model.User) *model.User { l4g.Error(utils.T("api.import.import_user.set_email.error"), cresult.Err) } - if err := JoinUserToTeam(team, user); err != nil { + if err := JoinUserToTeam(team, user, ""); err != nil { l4g.Error(utils.T("api.import.import_user.join_team.error"), err) } diff --git a/app/slackimport.go b/app/slackimport.go index 259d0a8d4..3e226203b 100644 --- a/app/slackimport.go +++ b/app/slackimport.go @@ -160,7 +160,7 @@ func SlackAddUsers(teamId string, slackusers []SlackUser, log *bytes.Buffer) map if result := <-Srv.Store.User().GetByEmail(email); result.Err == nil { existingUser := result.Data.(*model.User) addedUsers[sUser.Id] = existingUser - if err := JoinUserToTeam(team, addedUsers[sUser.Id]); err != nil { + if err := JoinUserToTeam(team, addedUsers[sUser.Id], ""); err != nil { log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing_failed", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username})) } else { log.WriteString(utils.T("api.slackimport.slack_add_users.merge_existing", map[string]interface{}{"Email": existingUser.Email, "Username": existingUser.Username})) diff --git a/app/team.go b/app/team.go index b0f9ae723..12c970665 100644 --- a/app/team.go +++ b/app/team.go @@ -47,7 +47,7 @@ func CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.Ap return nil, err } - if err = JoinUserToTeam(rteam, user); err != nil { + if err = JoinUserToTeam(rteam, user, ""); err != nil { return nil, err } @@ -161,7 +161,7 @@ func UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*mode return member, nil } -func AddUserToTeam(teamId string, userId string) (*model.Team, *model.AppError) { +func AddUserToTeam(teamId string, userId string, userRequestorId string) (*model.Team, *model.AppError) { tchan := Srv.Store.Team().Get(teamId) uchan := Srv.Store.User().Get(userId) @@ -179,7 +179,7 @@ func AddUserToTeam(teamId string, userId string) (*model.Team, *model.AppError) user = result.Data.(*model.User) } - if err := JoinUserToTeam(team, user); err != nil { + if err := JoinUserToTeam(team, user, userRequestorId); err != nil { return nil, err } @@ -190,7 +190,7 @@ func AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError { if result := <-Srv.Store.Team().Get(teamId); result.Err != nil { return result.Err } else { - return JoinUserToTeam(result.Data.(*model.Team), user) + return JoinUserToTeam(result.Data.(*model.Team), user, "") } } @@ -223,7 +223,7 @@ func AddUserToTeamByHash(userId string, hash string, data string) (*model.Team, user = result.Data.(*model.User) } - if err := JoinUserToTeam(team, user); err != nil { + if err := JoinUserToTeam(team, user, ""); err != nil { return nil, err } @@ -248,7 +248,7 @@ func AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *mode user = result.Data.(*model.User) } - if err := JoinUserToTeam(team, user); err != nil { + if err := JoinUserToTeam(team, user, ""); err != nil { return nil, err } @@ -293,7 +293,7 @@ func joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError) return false, nil } -func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError { +func JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError { if alreadyAdded, err := joinUserToTeam(team, user); err != nil { return err @@ -308,7 +308,7 @@ func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError { } // Soft error if there is an issue joining the default channels - if err := JoinDefaultChannels(team.Id, user, channelRole); err != nil { + if err := JoinDefaultChannels(team.Id, user, channelRole, userRequestorId); err != nil { l4g.Error(utils.T("api.user.create_user.joining.error"), user.Id, team.Id, err) } @@ -432,7 +432,7 @@ func GetTeamMembersByIds(teamId string, userIds []string) ([]*model.TeamMember, } func AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { - if _, err := AddUserToTeam(teamId, userId); err != nil { + if _, err := AddUserToTeam(teamId, userId, ""); err != nil { return nil, err } @@ -450,11 +450,11 @@ func AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { return teamMember, nil } -func AddTeamMembers(teamId string, userIds []string) ([]*model.TeamMember, *model.AppError) { +func AddTeamMembers(teamId string, userIds []string, userRequestorId string) ([]*model.TeamMember, *model.AppError) { var members []*model.TeamMember for _, userId := range userIds { - if _, err := AddUserToTeam(teamId, userId); err != nil { + if _, err := AddUserToTeam(teamId, userId, userRequestorId); err != nil { return nil, err } diff --git a/app/team_test.go b/app/team_test.go index 64af0c4af..86a383a39 100644 --- a/app/team_test.go +++ b/app/team_test.go @@ -95,7 +95,7 @@ func TestAddUserToTeam(t *testing.T) { user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@example.com", Nickname: "Darth Vader", Username: "vader" + model.NewId(), Password: "passwd1", AuthService: ""} ruser, _ := CreateUser(&user) - if _, err := AddUserToTeam(th.BasicTeam.Id, ruser.Id); err != nil { + if _, err := AddUserToTeam(th.BasicTeam.Id, ruser.Id, ""); err != nil { t.Log(err) t.Fatal("Should add user to the team") } diff --git a/app/user.go b/app/user.go index d995e90fe..99e9d46a3 100644 --- a/app/user.go +++ b/app/user.go @@ -63,7 +63,7 @@ func CreateUserWithHash(user *model.User, hash string, data string) (*model.User return nil, err } - if err := JoinUserToTeam(team, ruser); err != nil { + if err := JoinUserToTeam(team, ruser, ""); err != nil { return nil, err } @@ -92,7 +92,7 @@ func CreateUserWithInviteId(user *model.User, inviteId string) (*model.User, *mo return nil, err } - if err := JoinUserToTeam(team, ruser); err != nil { + if err := JoinUserToTeam(team, ruser, ""); err != nil { return nil, err } diff --git a/cmd/platform/team.go b/cmd/platform/team.go index 1dc5d46eb..eb2939617 100644 --- a/cmd/platform/team.go +++ b/cmd/platform/team.go @@ -154,7 +154,7 @@ func addUserToTeam(team *model.Team, user *model.User, userArg string) { CommandPrintErrorln("Can't find user '" + userArg + "'") return } - if err := app.JoinUserToTeam(team, user); err != nil { + if err := app.JoinUserToTeam(team, user, ""); err != nil { CommandPrintErrorln("Unable to add '" + userArg + "' to " + team.Name) } } diff --git a/web/web_test.go b/web/web_test.go index a977a113e..0e5353d19 100644 --- a/web/web_test.go +++ b/web/web_test.go @@ -72,7 +72,7 @@ func TestIncomingWebhook(t *testing.T) { team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} team = ApiClient.Must(ApiClient.CreateTeam(team)).Data.(*model.Team) - app.JoinUserToTeam(team, user) + app.JoinUserToTeam(team, user, "") app.UpdateUserRoles(user.Id, model.ROLE_SYSTEM_ADMIN.Id) ApiClient.SetTeamId(team.Id) |