diff --git a/app/app.go b/app/app.go index 2fbc5e307b9..bda56ca1aec 100644 --- a/app/app.go +++ b/app/app.go @@ -602,6 +602,7 @@ func (a *App) DoEmojisPermissionsMigration() { } var role *model.Role = nil + var systemAdminRole *model.Role = nil var err *model.AppError = nil mlog.Info("Migrating emojis config to database.") @@ -623,12 +624,7 @@ func (a *App) DoEmojisPermissionsMigration() { } break case model.RESTRICT_EMOJI_CREATION_SYSTEM_ADMIN: - role, err = a.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID) - if err != nil { - mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.") - mlog.Critical(err.Error()) - return - } + role = nil break default: mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.") @@ -636,8 +632,25 @@ func (a *App) DoEmojisPermissionsMigration() { return } - role.Permissions = append(role.Permissions, model.PERMISSION_MANAGE_EMOJIS.Id) - if result := <-a.Srv.Store.Role().Save(role); result.Err != nil { + if role != nil { + role.Permissions = append(role.Permissions, model.PERMISSION_MANAGE_EMOJIS.Id) + if result := <-a.Srv.Store.Role().Save(role); result.Err != nil { + mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.") + mlog.Critical(result.Err.Error()) + return + } + } + + systemAdminRole, err = a.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID) + if err != nil { + mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.") + mlog.Critical(err.Error()) + return + } + + systemAdminRole.Permissions = append(systemAdminRole.Permissions, model.PERMISSION_MANAGE_EMOJIS.Id) + systemAdminRole.Permissions = append(systemAdminRole.Permissions, model.PERMISSION_MANAGE_OTHERS_EMOJIS.Id) + if result := <-a.Srv.Store.Role().Save(systemAdminRole); result.Err != nil { mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.") mlog.Critical(result.Err.Error()) return diff --git a/app/app_test.go b/app/app_test.go index 38805cf6e63..dd6f0b59369 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -480,9 +480,7 @@ func TestDoEmojisPermissionsMigration(t *testing.T) { th.ResetEmojisMigration() th.App.DoEmojisPermissionsMigration() - role1, err1 := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID) - assert.Nil(t, err1) - expected1 := []string{ + expectedSystemAdmin := []string{ model.PERMISSION_ASSIGN_SYSTEM_ADMIN_ROLE.Id, model.PERMISSION_MANAGE_SYSTEM.Id, model.PERMISSION_MANAGE_ROLES.Id, @@ -533,8 +531,12 @@ func TestDoEmojisPermissionsMigration(t *testing.T) { model.PERMISSION_MANAGE_WEBHOOKS.Id, model.PERMISSION_EDIT_POST.Id, model.PERMISSION_MANAGE_EMOJIS.Id, + model.PERMISSION_MANAGE_OTHERS_EMOJIS.Id, } - assert.Equal(t, expected1, role1.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID)) + + role1, err1 := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID) + assert.Nil(t, err1) + assert.Equal(t, expectedSystemAdmin, role1.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID)) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.RestrictCustomEmojiCreation = model.RESTRICT_EMOJI_CREATION_ADMIN @@ -562,6 +564,10 @@ func TestDoEmojisPermissionsMigration(t *testing.T) { } assert.Equal(t, expected2, role2.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.TEAM_ADMIN_ROLE_ID)) + systemAdmin1, systemAdminErr1 := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID) + assert.Nil(t, systemAdminErr1) + assert.Equal(t, expectedSystemAdmin, systemAdmin1.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID)) + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.RestrictCustomEmojiCreation = model.RESTRICT_EMOJI_CREATION_ALL }) @@ -579,4 +585,8 @@ func TestDoEmojisPermissionsMigration(t *testing.T) { model.PERMISSION_MANAGE_EMOJIS.Id, } assert.Equal(t, expected3, role3.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_USER_ROLE_ID)) + + systemAdmin2, systemAdminErr2 := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID) + assert.Nil(t, systemAdminErr2) + assert.Equal(t, expectedSystemAdmin, systemAdmin2.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID)) }