diff options
author | George Goldberg <george@gberg.me> | 2018-06-29 16:50:06 +0100 |
---|---|---|
committer | Jesús Espino <jespinog@gmail.com> | 2018-06-29 17:50:06 +0200 |
commit | c371ae4db142d061d7e22d9cb72f3942e4d45faf (patch) | |
tree | 477cd3b019d036322dc5b07b0949b7363cd3fb85 /app/import.go | |
parent | 56ba06c0166f46e9fcfcc4f654a3f7346244b5a9 (diff) | |
download | chat-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.go | 48 |
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 |