mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
XYZ-51: Unit tests for and changes to SetRolePermissionsFromConfig. (#8160)
* XYZ-10: Role store. * XYZ-37: Update unit tests to work with database roles. * XYZ-51: Tests 'SetRolePermissionsFromConfig' against JSON from policy page. * XYZ-51: Adds permissions in non-licensed cases also. * XYZ-51: Removes some permissions from team_user role. * XYZ-51: Merge fix for change to default permissions from PR 8208. * XYZ-51: Removes unused function.
This commit is contained in:
@@ -460,7 +460,7 @@ func (a *App) DoAdvancedPermissionsMigration() {
|
|||||||
|
|
||||||
l4g.Info("Migrating roles to database.")
|
l4g.Info("Migrating roles to database.")
|
||||||
roles := model.MakeDefaultRoles()
|
roles := model.MakeDefaultRoles()
|
||||||
roles = utils.SetRolePermissionsFromConfig(roles, a.Config())
|
roles = utils.SetRolePermissionsFromConfig(roles, a.Config(), utils.IsLicensed())
|
||||||
|
|
||||||
allSucceeded := true
|
allSucceeded := true
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -275,6 +276,8 @@ func TestDoAdvancedPermissionsMigration(t *testing.T) {
|
|||||||
model.PERMISSION_GET_PUBLIC_LINK.Id,
|
model.PERMISSION_GET_PUBLIC_LINK.Id,
|
||||||
model.PERMISSION_CREATE_POST.Id,
|
model.PERMISSION_CREATE_POST.Id,
|
||||||
model.PERMISSION_USE_SLASH_COMMANDS.Id,
|
model.PERMISSION_USE_SLASH_COMMANDS.Id,
|
||||||
|
model.PERMISSION_DELETE_PUBLIC_CHANNEL.Id,
|
||||||
|
model.PERMISSION_DELETE_PRIVATE_CHANNEL.Id,
|
||||||
model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS.Id,
|
model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS.Id,
|
||||||
model.PERMISSION_DELETE_POST.Id,
|
model.PERMISSION_DELETE_POST.Id,
|
||||||
model.PERMISSION_EDIT_POST.Id,
|
model.PERMISSION_EDIT_POST.Id,
|
||||||
@@ -389,7 +392,7 @@ func TestDoAdvancedPermissionsMigration(t *testing.T) {
|
|||||||
for name, permissions := range expected2 {
|
for name, permissions := range expected2 {
|
||||||
role, err := th.App.GetRoleByName(name)
|
role, err := th.App.GetRoleByName(name)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, permissions, role.Permissions)
|
assert.Equal(t, permissions, role.Permissions, fmt.Sprintf("'%v' did not have expected permissions", name))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the license.
|
// Remove the license.
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"github.com/mattermost/mattermost-server/model"
|
"github.com/mattermost/mattermost-server/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Config) map[string]*model.Role {
|
func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Config, isLicensed bool) map[string]*model.Role {
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.TeamSettings.RestrictPublicChannelCreation {
|
switch *cfg.TeamSettings.RestrictPublicChannelCreation {
|
||||||
case model.PERMISSIONS_ALL:
|
case model.PERMISSIONS_ALL:
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
||||||
@@ -28,11 +28,11 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.TeamSettings.RestrictPublicChannelManagement {
|
switch *cfg.TeamSettings.RestrictPublicChannelManagement {
|
||||||
case model.PERMISSIONS_ALL:
|
case model.PERMISSIONS_ALL:
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id,
|
model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id,
|
||||||
)
|
)
|
||||||
case model.PERMISSIONS_CHANNEL_ADMIN:
|
case model.PERMISSIONS_CHANNEL_ADMIN:
|
||||||
@@ -51,17 +51,17 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id,
|
model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES.Id,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.TeamSettings.RestrictPublicChannelDeletion {
|
switch *cfg.TeamSettings.RestrictPublicChannelDeletion {
|
||||||
case model.PERMISSIONS_ALL:
|
case model.PERMISSIONS_ALL:
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_DELETE_PUBLIC_CHANNEL.Id,
|
model.PERMISSION_DELETE_PUBLIC_CHANNEL.Id,
|
||||||
)
|
)
|
||||||
case model.PERMISSIONS_CHANNEL_ADMIN:
|
case model.PERMISSIONS_CHANNEL_ADMIN:
|
||||||
@@ -80,13 +80,13 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_DELETE_PUBLIC_CHANNEL.Id,
|
model.PERMISSION_DELETE_PUBLIC_CHANNEL.Id,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.TeamSettings.RestrictPrivateChannelCreation {
|
switch *cfg.TeamSettings.RestrictPrivateChannelCreation {
|
||||||
case model.PERMISSIONS_ALL:
|
case model.PERMISSIONS_ALL:
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
||||||
@@ -106,11 +106,11 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.TeamSettings.RestrictPrivateChannelManagement {
|
switch *cfg.TeamSettings.RestrictPrivateChannelManagement {
|
||||||
case model.PERMISSIONS_ALL:
|
case model.PERMISSIONS_ALL:
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id,
|
model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id,
|
||||||
)
|
)
|
||||||
case model.PERMISSIONS_CHANNEL_ADMIN:
|
case model.PERMISSIONS_CHANNEL_ADMIN:
|
||||||
@@ -129,17 +129,17 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id,
|
model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES.Id,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.TeamSettings.RestrictPrivateChannelDeletion {
|
switch *cfg.TeamSettings.RestrictPrivateChannelDeletion {
|
||||||
case model.PERMISSIONS_ALL:
|
case model.PERMISSIONS_ALL:
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_DELETE_PRIVATE_CHANNEL.Id,
|
model.PERMISSION_DELETE_PRIVATE_CHANNEL.Id,
|
||||||
)
|
)
|
||||||
case model.PERMISSIONS_CHANNEL_ADMIN:
|
case model.PERMISSIONS_CHANNEL_ADMIN:
|
||||||
@@ -158,14 +158,14 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_USER_ROLE_ID].Permissions,
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions,
|
||||||
model.PERMISSION_DELETE_PRIVATE_CHANNEL.Id,
|
model.PERMISSION_DELETE_PRIVATE_CHANNEL.Id,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restrict permissions for Private Channel Manage Members
|
// Restrict permissions for Private Channel Manage Members
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.TeamSettings.RestrictPrivateChannelManageMembers {
|
switch *cfg.TeamSettings.RestrictPrivateChannelManageMembers {
|
||||||
case model.PERMISSIONS_ALL:
|
case model.PERMISSIONS_ALL:
|
||||||
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
@@ -207,7 +207,7 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Grant permissions for inviting and adding users to a team.
|
// Grant permissions for inviting and adding users to a team.
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
if *cfg.TeamSettings.RestrictTeamInvite == model.PERMISSIONS_TEAM_ADMIN {
|
if *cfg.TeamSettings.RestrictTeamInvite == model.PERMISSIONS_TEAM_ADMIN {
|
||||||
roles[model.TEAM_ADMIN_ROLE_ID].Permissions = append(
|
roles[model.TEAM_ADMIN_ROLE_ID].Permissions = append(
|
||||||
roles[model.TEAM_ADMIN_ROLE_ID].Permissions,
|
roles[model.TEAM_ADMIN_ROLE_ID].Permissions,
|
||||||
@@ -229,7 +229,7 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.ServiceSettings.RestrictPostDelete {
|
switch *cfg.ServiceSettings.RestrictPostDelete {
|
||||||
case model.PERMISSIONS_DELETE_POST_ALL:
|
case model.PERMISSIONS_DELETE_POST_ALL:
|
||||||
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
@@ -267,7 +267,7 @@ func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Confi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if IsLicensed() {
|
if isLicensed {
|
||||||
switch *cfg.ServiceSettings.AllowEditPost {
|
switch *cfg.ServiceSettings.AllowEditPost {
|
||||||
case model.ALLOW_EDIT_POST_ALWAYS, model.ALLOW_EDIT_POST_TIME_LIMIT:
|
case model.ALLOW_EDIT_POST_ALWAYS, model.ALLOW_EDIT_POST_TIME_LIMIT:
|
||||||
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
roles[model.CHANNEL_USER_ROLE_ID].Permissions = append(
|
||||||
|
|||||||
125
utils/authorization_test.go
Normal file
125
utils/authorization_test.go
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
// Copyright (c) 2018-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See License.txt for license information.
|
||||||
|
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
"github.com/mattermost/mattermost-server/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, 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)
|
||||||
|
}
|
||||||
|
field.Elem().SetString(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func roleHasPermission(role *model.Role, permission string) bool {
|
||||||
|
for _, p := range role.Permissions {
|
||||||
|
if p == permission {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
510
utils/policies-roles-mapping.json
Normal file
510
utils/policies-roles-mapping.json
Normal file
@@ -0,0 +1,510 @@
|
|||||||
|
{
|
||||||
|
"restrictTeamInvite": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "invite_user",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "invite_user",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "invite_user",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "invite_user",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "invite_user",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPublicChannelCreation": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "create_public_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "create_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "create_public_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "create_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "create_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPrivateChannelCreation": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "create_private_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "create_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "create_private_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "team_user",
|
||||||
|
"permission": "create_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "create_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPublicChannelManagement": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"channel_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_public_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPublicChannelDeletion": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"channel_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_public_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPrivateChannelManagement": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"channel_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_private_channel_properties",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPrivateChannelManageMembers": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"channel_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "manage_private_channel_members",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPrivateChannelDeletion": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"channel_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_private_channel",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"allowEditPost": {
|
||||||
|
"always": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "edit_post",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "system_admin",
|
||||||
|
"permission": "edit_post",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"never": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "edit_post",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "system_admin",
|
||||||
|
"permission": "edit_post",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restrictPostDelete": {
|
||||||
|
"all": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_others_posts",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_others_posts",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"team_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_others_posts",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_others_posts",
|
||||||
|
"shouldHave": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"system_admin": [
|
||||||
|
{
|
||||||
|
"roleName": "channel_user",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "channel_admin",
|
||||||
|
"permission": "delete_others_posts",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_post",
|
||||||
|
"shouldHave": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roleName": "team_admin",
|
||||||
|
"permission": "delete_others_posts",
|
||||||
|
"shouldHave": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user