[MM-36444] Manage config deprecations for 6.0 (#18035)
* removing deprecated stuff * removing deprecations and marking others for deprecations * removing some of the configs * partially remove ExperimentalChannelOrganization * fixing merge issues * moving default permissions to defaultroles function * removing experimentaltownsquare * removing old tests and remove legacysidebar config * fixing test * removing log * removing unused variables * MM-36444: Fix for renamed functions. * MM-36444: go mod tidy and go mod vendor. * MM-36444: Vendored go modules. * MM-36444: Removes UseExperimentalGossip config field from model. * Fix vendors * fixing test Co-authored-by: Benjamin Cooke <benjamincooke@Benjamins-MacBook-Pro.local> Co-authored-by: Mattermod <mattermod@users.noreply.github.com> Co-authored-by: Martin Kraft <martin@upspin.org> Co-authored-by: Claudio Costa <cstcld91@gmail.com>
Этот коммит содержится в:
@@ -1,295 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
)
|
||||
|
||||
func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Config, isLicensed bool) map[string]*model.Role {
|
||||
if isLicensed {
|
||||
switch *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictPublicChannelCreation {
|
||||
case model.PermissionsAll:
|
||||
roles[model.TeamUserRoleId].Permissions = append(
|
||||
roles[model.TeamUserRoleId].Permissions,
|
||||
model.PermissionCreatePublicChannel.Id,
|
||||
)
|
||||
case model.PermissionsTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionCreatePublicChannel.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.TeamUserRoleId].Permissions = append(
|
||||
roles[model.TeamUserRoleId].Permissions,
|
||||
model.PermissionCreatePublicChannel.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if isLicensed {
|
||||
switch *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictPublicChannelManagement {
|
||||
case model.PermissionsAll:
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionManagePublicChannelProperties.Id,
|
||||
)
|
||||
case model.PermissionsChannelAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionManagePublicChannelProperties.Id,
|
||||
)
|
||||
roles[model.ChannelAdminRoleId].Permissions = append(
|
||||
roles[model.ChannelAdminRoleId].Permissions,
|
||||
model.PermissionManagePublicChannelProperties.Id,
|
||||
)
|
||||
case model.PermissionsTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionManagePublicChannelProperties.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionManagePublicChannelProperties.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if isLicensed {
|
||||
switch *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictPublicChannelDeletion {
|
||||
case model.PermissionsAll:
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionDeletePublicChannel.Id,
|
||||
)
|
||||
case model.PermissionsChannelAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionDeletePublicChannel.Id,
|
||||
)
|
||||
roles[model.ChannelAdminRoleId].Permissions = append(
|
||||
roles[model.ChannelAdminRoleId].Permissions,
|
||||
model.PermissionDeletePublicChannel.Id,
|
||||
)
|
||||
case model.PermissionsTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionDeletePublicChannel.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionDeletePublicChannel.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if isLicensed {
|
||||
switch *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictPrivateChannelCreation {
|
||||
case model.PermissionsAll:
|
||||
roles[model.TeamUserRoleId].Permissions = append(
|
||||
roles[model.TeamUserRoleId].Permissions,
|
||||
model.PermissionCreatePrivateChannel.Id,
|
||||
)
|
||||
case model.PermissionsTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionCreatePrivateChannel.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.TeamUserRoleId].Permissions = append(
|
||||
roles[model.TeamUserRoleId].Permissions,
|
||||
model.PermissionCreatePrivateChannel.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if isLicensed {
|
||||
switch *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictPrivateChannelManagement {
|
||||
case model.PermissionsAll:
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelProperties.Id,
|
||||
)
|
||||
case model.PermissionsChannelAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelProperties.Id,
|
||||
)
|
||||
roles[model.ChannelAdminRoleId].Permissions = append(
|
||||
roles[model.ChannelAdminRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelProperties.Id,
|
||||
)
|
||||
case model.PermissionsTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelProperties.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelProperties.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if isLicensed {
|
||||
switch *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictPrivateChannelDeletion {
|
||||
case model.PermissionsAll:
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionDeletePrivateChannel.Id,
|
||||
)
|
||||
case model.PermissionsChannelAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionDeletePrivateChannel.Id,
|
||||
)
|
||||
roles[model.ChannelAdminRoleId].Permissions = append(
|
||||
roles[model.ChannelAdminRoleId].Permissions,
|
||||
model.PermissionDeletePrivateChannel.Id,
|
||||
)
|
||||
case model.PermissionsTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionDeletePrivateChannel.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionDeletePrivateChannel.Id,
|
||||
)
|
||||
}
|
||||
|
||||
// Restrict permissions for Private Channel Manage Members
|
||||
if isLicensed {
|
||||
switch *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictPrivateChannelManageMembers {
|
||||
case model.PermissionsAll:
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelMembers.Id,
|
||||
)
|
||||
case model.PermissionsChannelAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelMembers.Id,
|
||||
)
|
||||
roles[model.ChannelAdminRoleId].Permissions = append(
|
||||
roles[model.ChannelAdminRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelMembers.Id,
|
||||
)
|
||||
case model.PermissionsTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelMembers.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionManagePrivateChannelMembers.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if !*cfg.ServiceSettings.DEPRECATED_DO_NOT_USE_EnableOnlyAdminIntegrations {
|
||||
roles[model.TeamUserRoleId].Permissions = append(
|
||||
roles[model.TeamUserRoleId].Permissions,
|
||||
model.PermissionManageIncomingWebhooks.Id,
|
||||
model.PermissionManageOutgoingWebhooks.Id,
|
||||
model.PermissionManageSlashCommands.Id,
|
||||
)
|
||||
roles[model.SystemUserRoleId].Permissions = append(
|
||||
roles[model.SystemUserRoleId].Permissions,
|
||||
model.PermissionManageOAuth.Id,
|
||||
)
|
||||
}
|
||||
|
||||
// Grant permissions for inviting and adding users to a team.
|
||||
if isLicensed {
|
||||
if *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictTeamInvite == model.PermissionsTeamAdmin {
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionInviteUser.Id,
|
||||
model.PermissionAddUserToTeam.Id,
|
||||
)
|
||||
} else if *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_RestrictTeamInvite == model.PermissionsAll {
|
||||
roles[model.TeamUserRoleId].Permissions = append(
|
||||
roles[model.TeamUserRoleId].Permissions,
|
||||
model.PermissionInviteUser.Id,
|
||||
model.PermissionAddUserToTeam.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.TeamUserRoleId].Permissions = append(
|
||||
roles[model.TeamUserRoleId].Permissions,
|
||||
model.PermissionInviteUser.Id,
|
||||
model.PermissionAddUserToTeam.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if isLicensed {
|
||||
switch *cfg.ServiceSettings.DEPRECATED_DO_NOT_USE_RestrictPostDelete {
|
||||
case model.PermissionsDeletePostAll:
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionDeletePost.Id,
|
||||
)
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionDeletePost.Id,
|
||||
model.PermissionDeleteOthersPosts.Id,
|
||||
)
|
||||
case model.PermissionsDeletePostTeamAdmin:
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionDeletePost.Id,
|
||||
model.PermissionDeleteOthersPosts.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionDeletePost.Id,
|
||||
)
|
||||
roles[model.TeamAdminRoleId].Permissions = append(
|
||||
roles[model.TeamAdminRoleId].Permissions,
|
||||
model.PermissionDeletePost.Id,
|
||||
model.PermissionDeleteOthersPosts.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if *cfg.TeamSettings.DEPRECATED_DO_NOT_USE_EnableTeamCreation {
|
||||
roles[model.SystemUserRoleId].Permissions = append(
|
||||
roles[model.SystemUserRoleId].Permissions,
|
||||
model.PermissionCreateTeam.Id,
|
||||
)
|
||||
}
|
||||
|
||||
if isLicensed {
|
||||
switch *cfg.ServiceSettings.DEPRECATED_DO_NOT_USE_AllowEditPost {
|
||||
case model.AllowEditPostAlways, model.AllowEditPostTimeLimit:
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionEditPost.Id,
|
||||
)
|
||||
roles[model.SystemAdminRoleId].Permissions = append(
|
||||
roles[model.SystemAdminRoleId].Permissions,
|
||||
model.PermissionEditPost.Id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
roles[model.ChannelUserRoleId].Permissions = append(
|
||||
roles[model.ChannelUserRoleId].Permissions,
|
||||
model.PermissionEditPost.Id,
|
||||
)
|
||||
roles[model.SystemAdminRoleId].Permissions = append(
|
||||
roles[model.SystemAdminRoleId].Permissions,
|
||||
model.PermissionEditPost.Id,
|
||||
)
|
||||
}
|
||||
|
||||
return roles
|
||||
}
|
||||
@@ -1,133 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
)
|
||||
|
||||
type RoleState struct {
|
||||
RoleName string `json:"roleName"`
|
||||
Permission string `json:"permission"`
|
||||
ShouldHave bool `json:"shouldHave"`
|
||||
}
|
||||
|
||||
func mockConfig() *model.Config {
|
||||
config := model.Config{}
|
||||
config.SetDefaults()
|
||||
return &config
|
||||
}
|
||||
|
||||
func mapping() (map[string]map[string][]RoleState, error) {
|
||||
|
||||
policiesRolesMapping := make(map[string]map[string][]RoleState)
|
||||
|
||||
raw, err := ioutil.ReadFile("./policies-roles-mapping.json")
|
||||
if err != nil {
|
||||
return policiesRolesMapping, err
|
||||
}
|
||||
|
||||
var f map[string]interface{}
|
||||
err = json.Unmarshal(raw, &f)
|
||||
if err != nil {
|
||||
return policiesRolesMapping, err
|
||||
}
|
||||
|
||||
for policyName, value := range f {
|
||||
|
||||
capitalizedName := fmt.Sprintf("%v%v", strings.ToUpper(policyName[:1]), policyName[1:])
|
||||
policiesRolesMapping[capitalizedName] = make(map[string][]RoleState)
|
||||
|
||||
for policyValue, roleStatesMappings := range value.(map[string]interface{}) {
|
||||
|
||||
var roleStates []RoleState
|
||||
for _, roleStateMapping := range roleStatesMappings.([]interface{}) {
|
||||
|
||||
roleStateMappingJSON, _ := json.Marshal(roleStateMapping)
|
||||
var roleState RoleState
|
||||
_ = json.Unmarshal(roleStateMappingJSON, &roleState)
|
||||
|
||||
roleStates = append(roleStates, roleState)
|
||||
|
||||
}
|
||||
|
||||
policiesRolesMapping[capitalizedName][policyValue] = roleStates
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return policiesRolesMapping, nil
|
||||
}
|
||||
|
||||
func TestSetRolePermissionsFromConfig(t *testing.T) {
|
||||
|
||||
mapping, err := mapping()
|
||||
if err != nil {
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
for policyName, v := range mapping {
|
||||
for policyValue, rolesMappings := range v {
|
||||
|
||||
config := mockConfig()
|
||||
updateConfig(config, "DEPRECATED_DO_NOT_USE_"+policyName, policyValue)
|
||||
roles := model.MakeDefaultRoles()
|
||||
SetRolePermissionsFromConfig(roles, config, true)
|
||||
|
||||
for _, roleMappingItem := range rolesMappings {
|
||||
role := roles[roleMappingItem.RoleName]
|
||||
|
||||
permission := roleMappingItem.Permission
|
||||
hasPermission := roleHasPermission(role, permission)
|
||||
|
||||
if (roleMappingItem.ShouldHave && !hasPermission) || (!roleMappingItem.ShouldHave && hasPermission) {
|
||||
wording := "not to"
|
||||
if roleMappingItem.ShouldHave {
|
||||
wording = "to"
|
||||
}
|
||||
t.Errorf("Expected '%v' %v have '%v' permission when '%v' is set to '%v'.", role.Name, wording, permission, policyName, policyValue)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func updateConfig(config *model.Config, key string, value string) {
|
||||
v := reflect.ValueOf(config.ServiceSettings)
|
||||
field := v.FieldByName(key)
|
||||
if !field.IsValid() {
|
||||
v = reflect.ValueOf(config.TeamSettings)
|
||||
field = v.FieldByName(key)
|
||||
}
|
||||
|
||||
switch value {
|
||||
case "true", "false":
|
||||
b, _ := strconv.ParseBool(value)
|
||||
field.Elem().SetBool(b)
|
||||
default:
|
||||
field.Elem().SetString(value)
|
||||
}
|
||||
}
|
||||
|
||||
func roleHasPermission(role *model.Role, permission string) bool {
|
||||
for _, p := range role.Permissions {
|
||||
if p == permission {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
Ссылка в новой задаче
Block a user