summaryrefslogtreecommitdiffstats
path: root/app/team.go
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2017-02-02 15:03:41 +0000
committerHarrison Healey <harrisonmhealey@gmail.com>2017-02-02 10:03:41 -0500
commit28e445c6e08d0aa931fcf0be0098dfd47aa87eb4 (patch)
tree3b995da5fb26e9fad364af2a8872527f8e5fa156 /app/team.go
parente9d6287dc8fefc9ea6fa1c49743364218a188abd (diff)
downloadchat-28e445c6e08d0aa931fcf0be0098dfd47aa87eb4.tar.gz
chat-28e445c6e08d0aa931fcf0be0098dfd47aa87eb4.tar.bz2
chat-28e445c6e08d0aa931fcf0be0098dfd47aa87eb4.zip
PLT-5407: Bulk importing of User memberships. (#5273)
Diffstat (limited to 'app/team.go')
-rw-r--r--app/team.go30
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