Files
mostlymatter/utils/authorization.go
Agniva De Sarker c4b4e1bc38 MM-36271: Bump major version to 6.0 (#17973)
https://mattermost.atlassian.net/browse/MM-36271

```release-note
We bump the major version to 6.0
```
2021-07-22 12:21:47 +05:30

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
}