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
}
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.
func (a *App) DoPermissionsMigrations() error {
return a.Srv().doPermissionsMigrations()
@@ -1032,6 +1053,7 @@ func (s *Server) doPermissionsMigrations() error {
{Key: model.MigrationKeyAddPlaybooksPermissions, Migration: a.getAddPlaybooksPermissions},
{Key: model.MigrationKeyAddCustomUserGroupsPermissions, Migration: a.getAddCustomUserGroupsPermissions},
{Key: model.MigrationKeyAddPlayboosksManageRolesPermissions, Migration: a.getPlaybooksPermissionsAddManageRoles},
{Key: model.MigrationKeyAddProductsBoardsPermissions, Migration: a.getProductsBoardsPermissions},
}
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 {
Enable bool
}
@@ -3136,6 +3146,7 @@ type Config struct {
DataRetentionSettings DataRetentionSettings
MessageExportSettings MessageExportSettings
JobSettings JobSettings
ProductSettings ProductSettings
PluginSettings PluginSettings
DisplaySettings DisplaySettings
GuestAccountsSettings GuestAccountsSettings
@@ -3235,6 +3246,7 @@ func (o *Config) SetDefaults() {
o.ThemeSettings.SetDefaults()
o.ClusterSettings.SetDefaults()
o.PluginSettings.SetDefaults(o.LogSettings)
o.ProductSettings.SetDefaults()
o.AnalyticsSettings.SetDefaults()
o.ComplianceSettings.SetDefaults()
o.LocalizationSettings.SetDefaults()

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

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

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

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

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

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

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

@@ -67,6 +67,7 @@ const (
TrackConfigBleve = "config_bleve"
TrackConfigExport = "config_export"
TrackFeatureFlags = "config_feature_flags"
TrackConfigProducts = "products"
TrackPermissionsGeneral = "permissions_general"
TrackPermissionsSystemScheme = "permissions_system_scheme"
TrackPermissionsTeamSchemes = "permissions_team_schemes"
@@ -827,6 +828,10 @@ func (ts *TelemetryService) trackConfig() {
"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
flags := cfg.FeatureFlags.ToMap()
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.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", "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("Save", mock.AnythingOfType("*model.System")).Return(nil)