MM-47250: Add new system console section (#21333)

* MM-47250: Add new system console section

We add a new section in system console
for products.

```release-note
Added a new section in system console
for products. For now, it only contains
boards specific settings.
```

* fix unit tests

```release-note
NONE
```

* change comment

```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2022-10-20 00:53:20 +05:30
коммит произвёл GitHub
родитель 10a627fac1
Коммит 5730d3da6e
7 изменённых файлов: 62 добавлений и 0 удалений

Просмотреть файл

@@ -991,6 +991,27 @@ func (a *App) getPlaybooksPermissionsAddManageRoles() (permissionsMap, error) {
return transformations, nil return transformations, nil
} }
func (a *App) getProductsBoardsPermissions() (permissionsMap, error) {
transformations := []permissionTransformation{}
permissionsProductsRead := []string{model.PermissionSysconsoleReadProductsBoards.Id}
permissionsProductsWrite := []string{model.PermissionSysconsoleWriteProductsBoards.Id}
// Give the new subsection READ permissions to any user with SYSTEM_MANAGER
transformations = append(transformations, permissionTransformation{
On: permissionOr(isRole(model.SystemManagerRoleId)),
Add: permissionsProductsRead,
})
// Give the new subsection WRITE permissions to any user with SYSTEM_ADMIN
transformations = append(transformations, permissionTransformation{
On: permissionOr(isRole(model.SystemAdminRoleId)),
Add: permissionsProductsWrite,
})
return transformations, nil
}
// DoPermissionsMigrations execute all the permissions migrations need by the current version. // DoPermissionsMigrations execute all the permissions migrations need by the current version.
func (a *App) DoPermissionsMigrations() error { func (a *App) DoPermissionsMigrations() error {
return a.Srv().doPermissionsMigrations() return a.Srv().doPermissionsMigrations()
@@ -1032,6 +1053,7 @@ func (s *Server) doPermissionsMigrations() error {
{Key: model.MigrationKeyAddPlaybooksPermissions, Migration: a.getAddPlaybooksPermissions}, {Key: model.MigrationKeyAddPlaybooksPermissions, Migration: a.getAddPlaybooksPermissions},
{Key: model.MigrationKeyAddCustomUserGroupsPermissions, Migration: a.getAddCustomUserGroupsPermissions}, {Key: model.MigrationKeyAddCustomUserGroupsPermissions, Migration: a.getAddCustomUserGroupsPermissions},
{Key: model.MigrationKeyAddPlayboosksManageRolesPermissions, Migration: a.getPlaybooksPermissionsAddManageRoles}, {Key: model.MigrationKeyAddPlayboosksManageRolesPermissions, Migration: a.getPlaybooksPermissionsAddManageRoles},
{Key: model.MigrationKeyAddProductsBoardsPermissions, Migration: a.getProductsBoardsPermissions},
} }
roles, err := s.Store().Role().GetAll() roles, err := s.Store().Role().GetAll()

Просмотреть файл

@@ -2747,6 +2747,16 @@ func (s *CloudSettings) SetDefaults() {
} }
} }
type ProductSettings struct {
EnablePublicSharedBoards *bool
}
func (s *ProductSettings) SetDefaults() {
if s.EnablePublicSharedBoards == nil {
s.EnablePublicSharedBoards = NewBool(false)
}
}
type PluginState struct { type PluginState struct {
Enable bool Enable bool
} }
@@ -3136,6 +3146,7 @@ type Config struct {
DataRetentionSettings DataRetentionSettings DataRetentionSettings DataRetentionSettings
MessageExportSettings MessageExportSettings MessageExportSettings MessageExportSettings
JobSettings JobSettings JobSettings JobSettings
ProductSettings ProductSettings
PluginSettings PluginSettings PluginSettings PluginSettings
DisplaySettings DisplaySettings DisplaySettings DisplaySettings
GuestAccountsSettings GuestAccountsSettings GuestAccountsSettings GuestAccountsSettings
@@ -3235,6 +3246,7 @@ func (o *Config) SetDefaults() {
o.ThemeSettings.SetDefaults() o.ThemeSettings.SetDefaults()
o.ClusterSettings.SetDefaults() o.ClusterSettings.SetDefaults()
o.PluginSettings.SetDefaults(o.LogSettings) o.PluginSettings.SetDefaults(o.LogSettings)
o.ProductSettings.SetDefaults()
o.AnalyticsSettings.SetDefaults() o.AnalyticsSettings.SetDefaults()
o.ComplianceSettings.SetDefaults() o.ComplianceSettings.SetDefaults()
o.LocalizationSettings.SetDefaults() o.LocalizationSettings.SetDefaults()

Просмотреть файл

@@ -38,4 +38,5 @@ const (
MigrationKeyAddPlaybooksPermissions = "playbooks_permissions" MigrationKeyAddPlaybooksPermissions = "playbooks_permissions"
MigrationKeyAddCustomUserGroupsPermissions = "custom_groups_permissions" MigrationKeyAddCustomUserGroupsPermissions = "custom_groups_permissions"
MigrationKeyAddPlayboosksManageRolesPermissions = "playbooks_manage_roles" MigrationKeyAddPlayboosksManageRolesPermissions = "playbooks_manage_roles"
MigrationKeyAddProductsBoardsPermissions = "products_boards"
) )

Просмотреть файл

@@ -354,6 +354,9 @@ var PermissionRunManageProperties *Permission
var PermissionRunManageMembers *Permission var PermissionRunManageMembers *Permission
var PermissionRunView *Permission var PermissionRunView *Permission
var PermissionSysconsoleReadProductsBoards *Permission
var PermissionSysconsoleWriteProductsBoards *Permission
// General permission that encompasses all system admin functions // General permission that encompasses all system admin functions
// in the future this could be broken up to allow access to some // in the future this could be broken up to allow access to some
// admin functions but not others // admin functions but not others
@@ -2070,6 +2073,19 @@ func initializePermissions() {
PermissionScopeRun, PermissionScopeRun,
} }
PermissionSysconsoleReadProductsBoards = &Permission{
"sysconsole_read_products_boards",
"",
"",
PermissionScopeSystem,
}
PermissionSysconsoleWriteProductsBoards = &Permission{
"sysconsole_write_products_boards",
"",
"",
PermissionScopeSystem,
}
SysconsoleReadPermissions = []*Permission{ SysconsoleReadPermissions = []*Permission{
PermissionSysconsoleReadAboutEditionAndLicense, PermissionSysconsoleReadAboutEditionAndLicense,
PermissionSysconsoleReadBilling, PermissionSysconsoleReadBilling,
@@ -2125,6 +2141,7 @@ func initializePermissions() {
PermissionSysconsoleReadExperimentalFeatures, PermissionSysconsoleReadExperimentalFeatures,
PermissionSysconsoleReadExperimentalFeatureFlags, PermissionSysconsoleReadExperimentalFeatureFlags,
PermissionSysconsoleReadExperimentalBleve, PermissionSysconsoleReadExperimentalBleve,
PermissionSysconsoleReadProductsBoards,
} }
SysconsoleWritePermissions = []*Permission{ SysconsoleWritePermissions = []*Permission{
@@ -2182,6 +2199,7 @@ func initializePermissions() {
PermissionSysconsoleWriteExperimentalFeatures, PermissionSysconsoleWriteExperimentalFeatures,
PermissionSysconsoleWriteExperimentalFeatureFlags, PermissionSysconsoleWriteExperimentalFeatureFlags,
PermissionSysconsoleWriteExperimentalBleve, PermissionSysconsoleWriteExperimentalBleve,
PermissionSysconsoleWriteProductsBoards,
} }
SystemScopedPermissionsMinusSysconsole := []*Permission{ SystemScopedPermissionsMinusSysconsole := []*Permission{

Просмотреть файл

@@ -261,6 +261,7 @@ func init() {
PermissionSysconsoleReadExperimentalFeatures.Id, PermissionSysconsoleReadExperimentalFeatures.Id,
PermissionSysconsoleReadExperimentalFeatureFlags.Id, PermissionSysconsoleReadExperimentalFeatureFlags.Id,
PermissionSysconsoleReadExperimentalBleve.Id, PermissionSysconsoleReadExperimentalBleve.Id,
PermissionSysconsoleReadProductsBoards.Id,
} }
SystemManagerDefaultPermissions = []string{ SystemManagerDefaultPermissions = []string{
@@ -339,6 +340,8 @@ func init() {
PermissionSysconsoleWriteIntegrationsBotAccounts.Id, PermissionSysconsoleWriteIntegrationsBotAccounts.Id,
PermissionSysconsoleWriteIntegrationsGif.Id, PermissionSysconsoleWriteIntegrationsGif.Id,
PermissionSysconsoleWriteIntegrationsCors.Id, PermissionSysconsoleWriteIntegrationsCors.Id,
PermissionSysconsoleReadProductsBoards.Id,
PermissionSysconsoleWriteProductsBoards.Id,
} }
SystemCustomGroupAdminDefaultPermissions = []string{ SystemCustomGroupAdminDefaultPermissions = []string{

Просмотреть файл

@@ -67,6 +67,7 @@ const (
TrackConfigBleve = "config_bleve" TrackConfigBleve = "config_bleve"
TrackConfigExport = "config_export" TrackConfigExport = "config_export"
TrackFeatureFlags = "config_feature_flags" TrackFeatureFlags = "config_feature_flags"
TrackConfigProducts = "products"
TrackPermissionsGeneral = "permissions_general" TrackPermissionsGeneral = "permissions_general"
TrackPermissionsSystemScheme = "permissions_system_scheme" TrackPermissionsSystemScheme = "permissions_system_scheme"
TrackPermissionsTeamSchemes = "permissions_team_schemes" TrackPermissionsTeamSchemes = "permissions_team_schemes"
@@ -827,6 +828,10 @@ func (ts *TelemetryService) trackConfig() {
"retention_days": *cfg.ExportSettings.RetentionDays, "retention_days": *cfg.ExportSettings.RetentionDays,
}) })
ts.SendTelemetry(TrackConfigProducts, map[string]any{
"enable_public_shared_boards": *cfg.ProductSettings.EnablePublicSharedBoards,
})
// Convert feature flags to map[string]any for sending // Convert feature flags to map[string]any for sending
flags := cfg.FeatureFlags.ToMap() flags := cfg.FeatureFlags.ToMap()
interfaceFlags := make(map[string]any) interfaceFlags := make(map[string]any)

Просмотреть файл

@@ -69,6 +69,7 @@ func GetMockStoreForSetupFunctions() *mocks.Store {
systemStore.On("GetByName", model.MigrationKeyAddCustomUserGroupsPermissions).Return(&model.System{Name: model.MigrationKeyAddCustomUserGroupsPermissions, Value: "true"}, nil) systemStore.On("GetByName", model.MigrationKeyAddCustomUserGroupsPermissions).Return(&model.System{Name: model.MigrationKeyAddCustomUserGroupsPermissions, Value: "true"}, nil)
systemStore.On("GetByName", model.MigrationKeyAddPlayboosksManageRolesPermissions).Return(&model.System{Name: model.MigrationKeyAddPlayboosksManageRolesPermissions, Value: "true"}, nil) systemStore.On("GetByName", model.MigrationKeyAddPlayboosksManageRolesPermissions).Return(&model.System{Name: model.MigrationKeyAddPlayboosksManageRolesPermissions, Value: "true"}, nil)
systemStore.On("GetByName", "CustomGroupAdminRoleCreationMigrationComplete").Return(&model.System{Name: model.MigrationKeyAddPlayboosksManageRolesPermissions, Value: "true"}, nil) systemStore.On("GetByName", "CustomGroupAdminRoleCreationMigrationComplete").Return(&model.System{Name: model.MigrationKeyAddPlayboosksManageRolesPermissions, Value: "true"}, nil)
systemStore.On("GetByName", "products_boards").Return(&model.System{Name: "products_boards", Value: "true"}, nil)
systemStore.On("InsertIfExists", mock.AnythingOfType("*model.System")).Return(&model.System{}, nil).Once() systemStore.On("InsertIfExists", mock.AnythingOfType("*model.System")).Return(&model.System{}, nil).Once()
systemStore.On("Save", mock.AnythingOfType("*model.System")).Return(nil) systemStore.On("Save", mock.AnythingOfType("*model.System")).Return(nil)