summaryrefslogtreecommitdiffstats
path: root/store/sqlstore/team_store.go
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2018-06-11 15:24:08 +0100
committerCarlos Tadeu Panato Junior <ctadeu@gmail.com>2018-06-11 16:24:08 +0200
commitd4761a94cebfd667373e1635dd1c9ad334b3b80c (patch)
treeff1e4ff5750450ade5823b1d7a0b342cfc36c70a /store/sqlstore/team_store.go
parent566539bc67c8e467f88401551f999436e27fe70a (diff)
downloadchat-d4761a94cebfd667373e1635dd1c9ad334b3b80c.tar.gz
chat-d4761a94cebfd667373e1635dd1c9ad334b3b80c.tar.bz2
chat-d4761a94cebfd667373e1635dd1c9ad334b3b80c.zip
Fix idempotency of scheme migrations. (#8935)
This fixes the issue where if the migration tries to migrate an already scheme-aware member object it would end up removing it's scheme-derived roles. Instead, only if the member object is unmigrated do we default to setting the scheme-derived role booleans to false. We tell if it is an unmigrated member object by checking if the booleans are set to null.
Diffstat (limited to 'store/sqlstore/team_store.go')
-rw-r--r--store/sqlstore/team_store.go8
1 files changed, 6 insertions, 2 deletions
diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go
index fe4c09175..22f0bdb29 100644
--- a/store/sqlstore/team_store.go
+++ b/store/sqlstore/team_store.go
@@ -755,8 +755,12 @@ func (s SqlTeamStore) MigrateTeamMembers(fromTeamId string, fromUserId string) s
for _, member := range teamMembers {
roles := strings.Fields(member.Roles)
var newRoles []string
- member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
- member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
+ if !member.SchemeAdmin.Valid {
+ member.SchemeAdmin = sql.NullBool{Bool: false, Valid: true}
+ }
+ if !member.SchemeUser.Valid {
+ member.SchemeUser = sql.NullBool{Bool: false, Valid: true}
+ }
for _, role := range roles {
if role == model.TEAM_ADMIN_ROLE_ID {
member.SchemeAdmin = sql.NullBool{Bool: true, Valid: true}