Skip to content

Commit

Permalink
PLT-6198: Use added to channel system message on default channels.
Browse files Browse the repository at this point in the history
Use a different sytem message when a user was added to a default channel
by someone else than when they joined themselves.
  • Loading branch information
grundleborg committed Apr 4, 2017
1 parent c7bdce8 commit 8698757
Show file tree
Hide file tree
Showing 13 changed files with 49 additions and 28 deletions.
2 changes: 1 addition & 1 deletion api/apitestlib.go
Expand Up @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion api/team.go
Expand Up @@ -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
}
Expand Down
2 changes: 1 addition & 1 deletion api4/apitestlib.go
Expand Up @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion api4/team.go
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion app/apptestlib.go
Expand Up @@ -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()
Expand Down
31 changes: 26 additions & 5 deletions app/channel.go
Expand Up @@ -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 {
Expand All @@ -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)
Expand All @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion app/import.go
Expand Up @@ -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)
}

Expand Down
2 changes: 1 addition & 1 deletion app/slackimport.go
Expand Up @@ -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}))
Expand Down
22 changes: 11 additions & 11 deletions app/team.go
Expand Up @@ -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
}

Expand Down Expand Up @@ -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)

Expand All @@ -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
}

Expand All @@ -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, "")
}
}

Expand Down Expand Up @@ -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
}

Expand All @@ -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
}

Expand Down Expand Up @@ -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
Expand All @@ -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)
}

Expand Down Expand Up @@ -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
}

Expand All @@ -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
}

Expand Down
2 changes: 1 addition & 1 deletion app/team_test.go
Expand Up @@ -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")
}
Expand Down
4 changes: 2 additions & 2 deletions app/user.go
Expand Up @@ -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
}

Expand Down Expand Up @@ -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
}

Expand Down
2 changes: 1 addition & 1 deletion cmd/platform/team.go
Expand Up @@ -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)
}
}
Expand Down
2 changes: 1 addition & 1 deletion web/web_test.go
Expand Up @@ -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)
Expand Down

0 comments on commit 8698757

Please sign in to comment.