diff options
Diffstat (limited to 'app/team.go')
-rw-r--r-- | app/team.go | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/app/team.go b/app/team.go index 3c7145818..6225f3ee0 100644 --- a/app/team.go +++ b/app/team.go @@ -231,7 +231,7 @@ func AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *mode return team, nil } -func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError { +func joinUserToTeam(team *model.Team, user *model.User) (bool, *model.AppError) { tm := &model.TeamMember{ TeamId: team.Id, @@ -239,11 +239,8 @@ func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError { Roles: model.ROLE_TEAM_USER.Id, } - channelRole := model.ROLE_CHANNEL_USER.Id - if team.Email == user.Email { tm.Roles = model.ROLE_TEAM_USER.Id + " " + model.ROLE_TEAM_ADMIN.Id - channelRole = model.ROLE_CHANNEL_USER.Id + " " + model.ROLE_CHANNEL_ADMIN.Id } if etmr := <-Srv.Store.Team().GetMember(team.Id, user.Id); etmr.Err == nil { @@ -252,21 +249,38 @@ func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError { // Do nothing if already added if rtm.DeleteAt == 0 { - return nil + return true, nil } if tmr := <-Srv.Store.Team().UpdateMember(tm); tmr.Err != nil { - return tmr.Err + return false, tmr.Err } } else { // Membership appears to be missing. Lets try to add. if tmr := <-Srv.Store.Team().SaveMember(tm); tmr.Err != nil { - return tmr.Err + return false, tmr.Err } } if uua := <-Srv.Store.User().UpdateUpdateAt(user.Id); uua.Err != nil { - return uua.Err + return false, uua.Err + } + + return false, nil +} + +func JoinUserToTeam(team *model.Team, user *model.User) *model.AppError { + + if alreadyAdded, err := joinUserToTeam(team, user); err != nil { + return err + } else if alreadyAdded { + return nil + } + + channelRole := model.ROLE_CHANNEL_USER.Id + + if team.Email == user.Email { + channelRole = model.ROLE_CHANNEL_USER.Id + " " + model.ROLE_CHANNEL_ADMIN.Id } // Soft error if there is an issue joining the default channels |