summaryrefslogtreecommitdiffstats
path: root/app/import.go
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2018-06-29 16:50:06 +0100
committerJesús Espino <jespinog@gmail.com>2018-06-29 17:50:06 +0200
commitc371ae4db142d061d7e22d9cb72f3942e4d45faf (patch)
tree477cd3b019d036322dc5b07b0949b7363cd3fb85 /app/import.go
parent56ba06c0166f46e9fcfcc4f654a3f7346244b5a9 (diff)
downloadchat-c371ae4db142d061d7e22d9cb72f3942e4d45faf.tar.gz
chat-c371ae4db142d061d7e22d9cb72f3942e4d45faf.tar.bz2
chat-c371ae4db142d061d7e22d9cb72f3942e4d45faf.zip
Make import compatible with scheme-roles. (#9028)
This doesn't introduce new fields as we would then break backwards compatability with old "roles" fields. We can add custom fields if/when we go to "version 2" of the bulk import format.
Diffstat (limited to 'app/import.go')
-rw-r--r--app/import.go48
1 files changed, 42 insertions, 6 deletions
diff --git a/app/import.go b/app/import.go
index df20b2ba7..baf936567 100644
--- a/app/import.go
+++ b/app/import.go
@@ -1062,10 +1062,24 @@ func (a *App) ImportUserTeams(user *model.User, data *[]UserTeamImportData) *mod
}
var roles string
+ isSchemeUser := true
+ isSchemeAdmin := false
+
if tdata.Roles == nil {
- roles = model.TEAM_USER_ROLE_ID
+ isSchemeUser = true
} else {
- roles = *tdata.Roles
+ rawRoles := *tdata.Roles
+ explicitRoles := []string{}
+ for _, role := range strings.Fields(rawRoles) {
+ if role == model.TEAM_USER_ROLE_ID {
+ isSchemeUser = true
+ } else if role == model.TEAM_ADMIN_ROLE_ID {
+ isSchemeAdmin = true
+ } else {
+ explicitRoles = append(explicitRoles, role)
+ }
+ }
+ roles = strings.Join(explicitRoles, " ")
}
var member *model.TeamMember
@@ -1073,12 +1087,16 @@ func (a *App) ImportUserTeams(user *model.User, data *[]UserTeamImportData) *mod
return err
}
- if member.Roles != roles {
+ if member.ExplicitRoles != roles {
if _, err := a.UpdateTeamMemberRoles(team.Id, user.Id, roles); err != nil {
return err
}
}
+ if member.SchemeAdmin != isSchemeAdmin || member.SchemeUser != isSchemeUser {
+ a.UpdateTeamMemberSchemeRoles(team.Id, user.Id, isSchemeUser, isSchemeAdmin)
+ }
+
if defaultChannel, err := a.GetChannelByName(model.DEFAULT_CHANNEL, team.Id); err != nil {
return err
} else if _, err = a.addUserToChannel(user, defaultChannel, member); err != nil {
@@ -1108,10 +1126,24 @@ func (a *App) ImportUserChannels(user *model.User, team *model.Team, teamMember
}
var roles string
+ isSchemeUser := true
+ isSchemeAdmin := false
+
if cdata.Roles == nil {
- roles = model.CHANNEL_USER_ROLE_ID
+ isSchemeUser = true
} else {
- roles = *cdata.Roles
+ rawRoles := *cdata.Roles
+ explicitRoles := []string{}
+ for _, role := range strings.Fields(rawRoles) {
+ if role == model.CHANNEL_USER_ROLE_ID {
+ isSchemeUser = true
+ } else if role == model.CHANNEL_ADMIN_ROLE_ID {
+ isSchemeAdmin = true
+ } else {
+ explicitRoles = append(explicitRoles, role)
+ }
+ }
+ roles = strings.Join(explicitRoles, " ")
}
var member *model.ChannelMember
@@ -1123,12 +1155,16 @@ func (a *App) ImportUserChannels(user *model.User, team *model.Team, teamMember
}
}
- if member.Roles != roles {
+ if member.ExplicitRoles != roles {
if _, err := a.UpdateChannelMemberRoles(channel.Id, user.Id, roles); err != nil {
return err
}
}
+ if member.SchemeAdmin != isSchemeAdmin || member.SchemeUser != isSchemeUser {
+ a.UpdateChannelMemberSchemeRoles(channel.Id, user.Id, isSchemeUser, isSchemeAdmin)
+ }
+
if cdata.NotifyProps != nil {
notifyProps := member.NotifyProps