summaryrefslogtreecommitdiffstats
path: root/app/team.go
diff options
context:
space:
mode:
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