diff --git a/app/app_test.go b/app/app_test.go index 4c7e0509d3..75b3c2ba08 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -181,6 +181,7 @@ func TestDoAdvancedPermissionsMigration(t *testing.T) { "system_admin": allPermissionIDs, } assert.Contains(t, allPermissionIDs, model.PERMISSION_MANAGE_SHARED_CHANNELS.Id, "manage_shared_channels permission not found") + assert.Contains(t, allPermissionIDs, model.PERMISSION_MANAGE_REMOTE_CLUSTERS.Id, "manage_remote_clusters permission not found") // Check the migration matches what's expected. for name, permissions := range expected1 { diff --git a/app/permissions_migrations.go b/app/permissions_migrations.go index 822471eae9..71e200e8f6 100644 --- a/app/permissions_migrations.go +++ b/app/permissions_migrations.go @@ -70,6 +70,7 @@ const ( PERMISSION_READ_PRIVATE_CHANNEL_GROUPS = "read_private_channel_groups" PERMISSION_EDIT_BRAND = "edit_brand" PERMISSION_MANAGE_SHARED_CHANNELS = "manage_shared_channels" + PERMISSION_MANAGE_REMOTE_CLUSTERS = "manage_remote_clusters" ) func isRole(roleName string) func(*model.Role, map[string]map[string]bool) bool { @@ -515,6 +516,15 @@ func (a *App) getAddManageSharedChannelsPermissionsMigration() (permissionsMap, }, nil } +func (a *App) getAddManageRemoteClustersPermissionsMigration() (permissionsMap, error) { + return permissionsMap{ + permissionTransformation{ + On: isRole(model.SYSTEM_ADMIN_ROLE_ID), + Add: []string{PERMISSION_MANAGE_REMOTE_CLUSTERS}, + }, + }, nil +} + // DoPermissionsMigrations execute all the permissions migrations need by the current version. func (a *App) DoPermissionsMigrations() error { PermissionsMigrations := []struct { @@ -535,6 +545,7 @@ func (a *App) DoPermissionsMigrations() error { {Key: model.MIGRATION_KEY_ADD_SYSTEM_CONSOLE_PERMISSIONS, Migration: a.getAddSystemConsolePermissionsMigration}, {Key: model.MIGRATION_KEY_ADD_CONVERT_CHANNEL_PERMISSIONS, Migration: a.getAddConvertChannelPermissionsMigration}, {Key: model.MIGRATION_KEY_ADD_MANAGE_SHARED_CHANNEL_PERMISSIONS, Migration: a.getAddManageSharedChannelsPermissionsMigration}, + {Key: model.MIGRATION_KEY_ADD_MANAGE_REMOTE_CLUSTERS_PERMISSIONS, Migration: a.getAddManageRemoteClustersPermissionsMigration}, {Key: model.MIGRATION_KEY_ADD_SYSTEM_ROLES_PERMISSIONS, Migration: a.getSystemRolesPermissionsMigration}, } diff --git a/model/migration.go b/model/migration.go index f552d16872..d8f0b44e13 100644 --- a/model/migration.go +++ b/model/migration.go @@ -23,4 +23,5 @@ const ( MIGRATION_KEY_ADD_CONVERT_CHANNEL_PERMISSIONS = "add_convert_channel_permissions" MIGRATION_KEY_ADD_SYSTEM_ROLES_PERMISSIONS = "add_system_roles_permissions" MIGRATION_KEY_ADD_MANAGE_SHARED_CHANNEL_PERMISSIONS = "manage_shared_channel_permissions" + MIGRATION_KEY_ADD_MANAGE_REMOTE_CLUSTERS_PERMISSIONS = "manage_remote_clusters_permissions" ) diff --git a/model/permission.go b/model/permission.go index d982962fd2..1928a9cb6e 100644 --- a/model/permission.go +++ b/model/permission.go @@ -100,6 +100,7 @@ var PERMISSION_USE_GROUP_MENTIONS *Permission var PERMISSION_READ_OTHER_USERS_TEAMS *Permission var PERMISSION_EDIT_BRAND *Permission var PERMISSION_MANAGE_SHARED_CHANNELS *Permission +var PERMISSION_MANAGE_REMOTE_CLUSTERS *Permission var PERMISSION_SYSCONSOLE_READ_ABOUT *Permission var PERMISSION_SYSCONSOLE_WRITE_ABOUT *Permission @@ -526,6 +527,12 @@ func initializePermissions() { "authentication.permissions.manage_shared_channels.description", PermissionScopeSystem, } + PERMISSION_MANAGE_REMOTE_CLUSTERS = &Permission{ + "manage_remote_clusters", + "authentication.permissions.manage_remote_clusters.name", + "authentication.permissions.manage_remote_clusters.description", + PermissionScopeSystem, + } PERMISSION_REMOVE_USER_FROM_TEAM = &Permission{ "remove_user_from_team", "authentication.permissions.remove_user_from_team.name", @@ -937,6 +944,7 @@ func initializePermissions() { PERMISSION_DEMOTE_TO_GUEST, PERMISSION_EDIT_BRAND, PERMISSION_MANAGE_SHARED_CHANNELS, + PERMISSION_MANAGE_REMOTE_CLUSTERS, } TeamScopedPermissions := []*Permission{ diff --git a/testlib/store.go b/testlib/store.go index f80e4947d2..4448d8c94c 100644 --- a/testlib/store.go +++ b/testlib/store.go @@ -48,6 +48,7 @@ func GetMockStoreForSetupFunctions() *mocks.Store { systemStore.On("GetByName", model.MIGRATION_KEY_ADD_CONVERT_CHANNEL_PERMISSIONS).Return(&model.System{Name: model.MIGRATION_KEY_ADD_CONVERT_CHANNEL_PERMISSIONS, Value: "true"}, nil) systemStore.On("GetByName", model.MIGRATION_KEY_ADD_SYSTEM_ROLES_PERMISSIONS).Return(&model.System{Name: model.MIGRATION_KEY_ADD_SYSTEM_ROLES_PERMISSIONS, Value: "true"}, nil) systemStore.On("GetByName", model.MIGRATION_KEY_ADD_MANAGE_SHARED_CHANNEL_PERMISSIONS).Return(&model.System{Name: model.MIGRATION_KEY_ADD_MANAGE_SHARED_CHANNEL_PERMISSIONS, Value: "true"}, nil) + systemStore.On("GetByName", model.MIGRATION_KEY_ADD_MANAGE_REMOTE_CLUSTERS_PERMISSIONS).Return(&model.System{Name: model.MIGRATION_KEY_ADD_MANAGE_REMOTE_CLUSTERS_PERMISSIONS, Value: "true"}, nil) systemStore.On("Get").Return(make(model.StringMap), nil) systemStore.On("Save", mock.AnythingOfType("*model.System")).Return(nil)