https://mattermost.atlassian.net/browse/MM-36271 ```release-note We bump the major version to 6.0 ```
296 строки
9.7 KiB
Go
296 строки
9.7 KiB
Go
// 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
|
|
}
|