From 9517cccab017f67db973ef4a601de68656ce1713 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Mon, 11 Jun 2018 20:09:38 +0200 Subject: [PATCH] Relese5.0 merge master 20180611 (#8939) * Add missing diagnostics (#8911) * Update diagnostics.go * Update diagnostics.go * Fix push notification styling backwards compatibility (#8913) * MM-10803: remove premature user sanitization on deactivation (#8926) * remove unused UpdateNonSSOUserActive * MM-10803: stop prematurely sanitizing users on deactivate This change was preceded by the removal of UpdateNonSSOUserActive to ensure there are no APIs relying on the sanitized return value. * MM-10803: test websocket events after UpdateUserActive * MM-10264: Adds system scheme to permissions import/export. (#8924) * MM-10264: Adds system scheme to permissions import/export. * MM-10264: Switches to more likely unique name. * MM-10264: Changed collision prevention string. * MM-10264: Rolls back created schemes in all error cases. * MM-10264: Test fix for more rollback cases. * 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. --- store/sqlstore/channel_store.go | 8 ++++++-- store/sqlstore/team_store.go | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go index 5f336d9041..476665514c 100644 --- a/store/sqlstore/channel_store.go +++ b/store/sqlstore/channel_store.go @@ -1733,8 +1733,12 @@ func (s SqlChannelStore) MigrateChannelMembers(fromChannelId string, fromUserId for _, member := range channelMembers { 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.CHANNEL_ADMIN_ROLE_ID { member.SchemeAdmin = sql.NullBool{Bool: true, Valid: true} diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index fe4c09175f..22f0bdb295 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}