[MM-32281] SqlRoleStore/GetByName: add context to allow read from master (#17176)
* role_store/GetByName: add context * propagate context in the app layer * propagate context in the app layer * add missing import Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
9eceeaa8db
Коммит
28ff4dc8d0
@@ -1116,7 +1116,7 @@ func (th *TestHelper) SaveDefaultRolePermissions() map[string][]string {
|
|||||||
"channel_user",
|
"channel_user",
|
||||||
"channel_admin",
|
"channel_admin",
|
||||||
} {
|
} {
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
@@ -1133,7 +1133,7 @@ func (th *TestHelper) RestoreDefaultRolePermissions(data map[string][]string) {
|
|||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
for roleName, permissions := range data {
|
for roleName, permissions := range data {
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
@@ -1158,7 +1158,7 @@ func (th *TestHelper) RestoreDefaultRolePermissions(data map[string][]string) {
|
|||||||
func (th *TestHelper) RemovePermissionFromRole(permission string, roleName string) {
|
func (th *TestHelper) RemovePermissionFromRole(permission string, roleName string) {
|
||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
@@ -1190,7 +1190,7 @@ func (th *TestHelper) RemovePermissionFromRole(permission string, roleName strin
|
|||||||
func (th *TestHelper) AddPermissionToRole(permission string, roleName string) {
|
func (th *TestHelper) AddPermissionToRole(permission string, roleName string) {
|
||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package api4
|
package api4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -596,7 +597,7 @@ func TestPatchGroupChannel(t *testing.T) {
|
|||||||
assert.NotNil(t, groupSyncable)
|
assert.NotNil(t, groupSyncable)
|
||||||
assert.True(t, groupSyncable.AutoAdd)
|
assert.True(t, groupSyncable.AutoAdd)
|
||||||
|
|
||||||
role, err := th.App.GetRoleByName("channel_user")
|
role, err := th.App.GetRoleByName(context.Background(), "channel_user")
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
originalPermissions := role.Permissions
|
originalPermissions := role.Permissions
|
||||||
_, err = th.App.PatchRole(role, &model.RolePatch{Permissions: &[]string{}})
|
_, err = th.App.PatchRole(role, &model.RolePatch{Permissions: &[]string{}})
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ func getRoleByName(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
role, err := c.App.GetRoleByName(c.Params.RoleName)
|
role, err := c.App.GetRoleByName(r.Context(), c.Params.RoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package api4
|
package api4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -180,7 +181,7 @@ func TestPatchRole(t *testing.T) {
|
|||||||
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
|
|
||||||
// Cannot edit a system admin
|
// Cannot edit a system admin
|
||||||
adminRole, err := th.App.Srv().Store.Role().GetByName("system_admin")
|
adminRole, err := th.App.Srv().Store.Role().GetByName(context.Background(), "system_admin")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
defer th.App.Srv().Store.Job().Delete(adminRole.Id)
|
defer th.App.Srv().Store.Job().Delete(adminRole.Id)
|
||||||
|
|
||||||
@@ -188,7 +189,7 @@ func TestPatchRole(t *testing.T) {
|
|||||||
CheckNotImplementedStatus(t, resp)
|
CheckNotImplementedStatus(t, resp)
|
||||||
|
|
||||||
// Cannot give other roles read / write to system roles or manage roles because only system admin can do these actions
|
// Cannot give other roles read / write to system roles or manage roles because only system admin can do these actions
|
||||||
systemManager, err := th.App.Srv().Store.Role().GetByName("system_manager")
|
systemManager, err := th.App.Srv().Store.Role().GetByName(context.Background(), "system_manager")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
defer th.App.Srv().Store.Job().Delete(systemManager.Id)
|
defer th.App.Srv().Store.Job().Delete(systemManager.Id)
|
||||||
|
|
||||||
@@ -271,7 +272,7 @@ func TestPatchRole(t *testing.T) {
|
|||||||
license.Features.GuestAccountsPermissions = model.NewBool(false)
|
license.Features.GuestAccountsPermissions = model.NewBool(false)
|
||||||
th.App.Srv().SetLicense(license)
|
th.App.Srv().SetLicense(license)
|
||||||
|
|
||||||
guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest")
|
guestRole, err := th.App.Srv().Store.Role().GetByName(context.Background(), "system_guest")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
received, resp = client.PatchRole(guestRole.Id, patch)
|
received, resp = client.PatchRole(guestRole.Id, patch)
|
||||||
CheckNotImplementedStatus(t, resp)
|
CheckNotImplementedStatus(t, resp)
|
||||||
@@ -281,7 +282,7 @@ func TestPatchRole(t *testing.T) {
|
|||||||
license := model.NewTestLicense()
|
license := model.NewTestLicense()
|
||||||
license.Features.GuestAccountsPermissions = model.NewBool(true)
|
license.Features.GuestAccountsPermissions = model.NewBool(true)
|
||||||
th.App.Srv().SetLicense(license)
|
th.App.Srv().SetLicense(license)
|
||||||
guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest")
|
guestRole, err := th.App.Srv().Store.Role().GetByName(context.Background(), "system_guest")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, resp = client.PatchRole(guestRole.Id, patch)
|
_, resp = client.PatchRole(guestRole.Id, patch)
|
||||||
CheckNoError(t, resp)
|
CheckNoError(t, resp)
|
||||||
|
|||||||
@@ -687,7 +687,7 @@ type AppIface interface {
|
|||||||
GetRetentionPoliciesCount() (int64, *model.AppError)
|
GetRetentionPoliciesCount() (int64, *model.AppError)
|
||||||
GetRetentionPolicy(policyID string) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
|
GetRetentionPolicy(policyID string) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
|
||||||
GetRole(id string) (*model.Role, *model.AppError)
|
GetRole(id string) (*model.Role, *model.AppError)
|
||||||
GetRoleByName(name string) (*model.Role, *model.AppError)
|
GetRoleByName(ctx context.Context, name string) (*model.Role, *model.AppError)
|
||||||
GetRolesByNames(names []string) ([]*model.Role, *model.AppError)
|
GetRolesByNames(names []string) ([]*model.Role, *model.AppError)
|
||||||
GetSamlCertificateStatus() *model.SamlCertificateStatus
|
GetSamlCertificateStatus() *model.SamlCertificateStatus
|
||||||
GetSamlMetadata() (string, *model.AppError)
|
GetSamlMetadata() (string, *model.AppError)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -185,7 +186,7 @@ func TestDoAdvancedPermissionsMigration(t *testing.T) {
|
|||||||
|
|
||||||
// Check the migration matches what's expected.
|
// Check the migration matches what's expected.
|
||||||
for name, permissions := range expected1 {
|
for name, permissions := range expected1 {
|
||||||
role, err := th.App.GetRoleByName(name)
|
role, err := th.App.GetRoleByName(context.Background(), name)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, role.Permissions, permissions, fmt.Sprintf("role %q didn't match", name))
|
assert.Equal(t, role.Permissions, permissions, fmt.Sprintf("role %q didn't match", name))
|
||||||
}
|
}
|
||||||
@@ -218,7 +219,7 @@ func TestDoAdvancedPermissionsMigration(t *testing.T) {
|
|||||||
assert.Equal(t, len(roles2), len(roleNames))
|
assert.Equal(t, len(roles2), len(roleNames))
|
||||||
|
|
||||||
for name, permissions := range expected1 {
|
for name, permissions := range expected1 {
|
||||||
role, err := th.App.GetRoleByName(name)
|
role, err := th.App.GetRoleByName(context.Background(), name)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, permissions, role.Permissions)
|
assert.Equal(t, permissions, role.Permissions)
|
||||||
}
|
}
|
||||||
@@ -317,7 +318,7 @@ func TestDoAdvancedPermissionsMigration(t *testing.T) {
|
|||||||
assert.Equal(t, len(roles3), len(roleNames))
|
assert.Equal(t, len(roles3), len(roleNames))
|
||||||
|
|
||||||
for name, permissions := range expected2 {
|
for name, permissions := range expected2 {
|
||||||
role, err := th.App.GetRoleByName(name)
|
role, err := th.App.GetRoleByName(context.Background(), name)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, permissions, role.Permissions, fmt.Sprintf("'%v' did not have expected permissions", name))
|
assert.Equal(t, permissions, role.Permissions, fmt.Sprintf("'%v' did not have expected permissions", name))
|
||||||
}
|
}
|
||||||
@@ -335,7 +336,7 @@ func TestDoAdvancedPermissionsMigration(t *testing.T) {
|
|||||||
assert.Equal(t, len(roles4), len(roleNames))
|
assert.Equal(t, len(roles4), len(roleNames))
|
||||||
|
|
||||||
for name, permissions := range expected1 {
|
for name, permissions := range expected1 {
|
||||||
role, err := th.App.GetRoleByName(name)
|
role, err := th.App.GetRoleByName(context.Background(), name)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, permissions, role.Permissions)
|
assert.Equal(t, permissions, role.Permissions)
|
||||||
}
|
}
|
||||||
@@ -396,7 +397,7 @@ func TestDoEmojisPermissionsMigration(t *testing.T) {
|
|||||||
expectedSystemAdmin := allPermissionIDs
|
expectedSystemAdmin := allPermissionIDs
|
||||||
sort.Strings(expectedSystemAdmin)
|
sort.Strings(expectedSystemAdmin)
|
||||||
|
|
||||||
role1, err1 := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID)
|
role1, err1 := th.App.GetRoleByName(context.Background(), model.SYSTEM_ADMIN_ROLE_ID)
|
||||||
assert.Nil(t, err1)
|
assert.Nil(t, err1)
|
||||||
sort.Strings(role1.Permissions)
|
sort.Strings(role1.Permissions)
|
||||||
assert.Equal(t, expectedSystemAdmin, role1.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID))
|
assert.Equal(t, expectedSystemAdmin, role1.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID))
|
||||||
@@ -408,7 +409,7 @@ func TestDoEmojisPermissionsMigration(t *testing.T) {
|
|||||||
th.ResetEmojisMigration()
|
th.ResetEmojisMigration()
|
||||||
th.App.DoEmojisPermissionsMigration()
|
th.App.DoEmojisPermissionsMigration()
|
||||||
|
|
||||||
role2, err2 := th.App.GetRoleByName(model.TEAM_ADMIN_ROLE_ID)
|
role2, err2 := th.App.GetRoleByName(context.Background(), model.TEAM_ADMIN_ROLE_ID)
|
||||||
assert.Nil(t, err2)
|
assert.Nil(t, err2)
|
||||||
expected2 := []string{
|
expected2 := []string{
|
||||||
model.PERMISSION_REMOVE_USER_FROM_TEAM.Id,
|
model.PERMISSION_REMOVE_USER_FROM_TEAM.Id,
|
||||||
@@ -442,7 +443,7 @@ func TestDoEmojisPermissionsMigration(t *testing.T) {
|
|||||||
sort.Strings(role2.Permissions)
|
sort.Strings(role2.Permissions)
|
||||||
assert.Equal(t, expected2, role2.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.TEAM_ADMIN_ROLE_ID))
|
assert.Equal(t, expected2, role2.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.TEAM_ADMIN_ROLE_ID))
|
||||||
|
|
||||||
systemAdmin1, systemAdminErr1 := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID)
|
systemAdmin1, systemAdminErr1 := th.App.GetRoleByName(context.Background(), model.SYSTEM_ADMIN_ROLE_ID)
|
||||||
assert.Nil(t, systemAdminErr1)
|
assert.Nil(t, systemAdminErr1)
|
||||||
sort.Strings(systemAdmin1.Permissions)
|
sort.Strings(systemAdmin1.Permissions)
|
||||||
assert.Equal(t, expectedSystemAdmin, systemAdmin1.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID))
|
assert.Equal(t, expectedSystemAdmin, systemAdmin1.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID))
|
||||||
@@ -454,7 +455,7 @@ func TestDoEmojisPermissionsMigration(t *testing.T) {
|
|||||||
th.ResetEmojisMigration()
|
th.ResetEmojisMigration()
|
||||||
th.App.DoEmojisPermissionsMigration()
|
th.App.DoEmojisPermissionsMigration()
|
||||||
|
|
||||||
role3, err3 := th.App.GetRoleByName(model.SYSTEM_USER_ROLE_ID)
|
role3, err3 := th.App.GetRoleByName(context.Background(), model.SYSTEM_USER_ROLE_ID)
|
||||||
assert.Nil(t, err3)
|
assert.Nil(t, err3)
|
||||||
expected3 := []string{
|
expected3 := []string{
|
||||||
model.PERMISSION_LIST_PUBLIC_TEAMS.Id,
|
model.PERMISSION_LIST_PUBLIC_TEAMS.Id,
|
||||||
@@ -470,7 +471,7 @@ func TestDoEmojisPermissionsMigration(t *testing.T) {
|
|||||||
sort.Strings(role3.Permissions)
|
sort.Strings(role3.Permissions)
|
||||||
assert.Equal(t, expected3, role3.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_USER_ROLE_ID))
|
assert.Equal(t, expected3, role3.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_USER_ROLE_ID))
|
||||||
|
|
||||||
systemAdmin2, systemAdminErr2 := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID)
|
systemAdmin2, systemAdminErr2 := th.App.GetRoleByName(context.Background(), model.SYSTEM_ADMIN_ROLE_ID)
|
||||||
assert.Nil(t, systemAdminErr2)
|
assert.Nil(t, systemAdminErr2)
|
||||||
sort.Strings(systemAdmin2.Permissions)
|
sort.Strings(systemAdmin2.Permissions)
|
||||||
assert.Equal(t, expectedSystemAdmin, systemAdmin2.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID))
|
assert.Equal(t, expectedSystemAdmin, systemAdmin2.Permissions, fmt.Sprintf("'%v' did not have expected permissions", model.SYSTEM_ADMIN_ROLE_ID))
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||||
"github.com/mattermost/mattermost-server/v5/store"
|
"github.com/mattermost/mattermost-server/v5/store"
|
||||||
|
"github.com/mattermost/mattermost-server/v5/store/sqlstore"
|
||||||
"github.com/mattermost/mattermost-server/v5/utils"
|
"github.com/mattermost/mattermost-server/v5/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -854,14 +855,14 @@ func (a *App) GetChannelModerationsForChannel(channel *model.Channel) ([]*model.
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
memberRole, err := a.GetRoleByName(memberRoleName)
|
memberRole, err := a.GetRoleByName(context.Background(), memberRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var guestRole *model.Role
|
var guestRole *model.Role
|
||||||
if guestRoleName != "" {
|
if guestRoleName != "" {
|
||||||
guestRole, err = a.GetRoleByName(guestRoleName)
|
guestRole, err = a.GetRoleByName(context.Background(), guestRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -871,14 +872,14 @@ func (a *App) GetChannelModerationsForChannel(channel *model.Channel) ([]*model.
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
higherScopedMemberRole, err := a.GetRoleByName(higherScopedMemberRoleName)
|
higherScopedMemberRole, err := a.GetRoleByName(context.Background(), higherScopedMemberRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var higherScopedGuestRole *model.Role
|
var higherScopedGuestRole *model.Role
|
||||||
if higherScopedGuestRoleName != "" {
|
if higherScopedGuestRoleName != "" {
|
||||||
higherScopedGuestRole, err = a.GetRoleByName(higherScopedGuestRoleName)
|
higherScopedGuestRole, err = a.GetRoleByName(context.Background(), higherScopedGuestRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -894,14 +895,15 @@ func (a *App) PatchChannelModerationsForChannel(channel *model.Channel, channelM
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
higherScopedMemberRole, err := a.GetRoleByName(higherScopedMemberRoleName)
|
ctx := sqlstore.WithMaster(context.Background())
|
||||||
|
higherScopedMemberRole, err := a.GetRoleByName(ctx, higherScopedMemberRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var higherScopedGuestRole *model.Role
|
var higherScopedGuestRole *model.Role
|
||||||
if higherScopedGuestRoleName != "" {
|
if higherScopedGuestRoleName != "" {
|
||||||
higherScopedGuestRole, err = a.GetRoleByName(higherScopedGuestRoleName)
|
higherScopedGuestRole, err = a.GetRoleByName(ctx, higherScopedGuestRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -933,7 +935,7 @@ func (a *App) PatchChannelModerationsForChannel(channel *model.Channel, channelM
|
|||||||
|
|
||||||
// Send a websocket event about this new role. The other new roles—member and guest—get emitted when they're updated.
|
// Send a websocket event about this new role. The other new roles—member and guest—get emitted when they're updated.
|
||||||
var adminRole *model.Role
|
var adminRole *model.Role
|
||||||
adminRole, err = a.GetRoleByName(scheme.DefaultChannelAdminRole)
|
adminRole, err = a.GetRoleByName(ctx, scheme.DefaultChannelAdminRole)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -951,14 +953,14 @@ func (a *App) PatchChannelModerationsForChannel(channel *model.Channel, channelM
|
|||||||
|
|
||||||
guestRoleName := scheme.DefaultChannelGuestRole
|
guestRoleName := scheme.DefaultChannelGuestRole
|
||||||
memberRoleName := scheme.DefaultChannelUserRole
|
memberRoleName := scheme.DefaultChannelUserRole
|
||||||
memberRole, err := a.GetRoleByName(memberRoleName)
|
memberRole, err := a.GetRoleByName(ctx, memberRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var guestRole *model.Role
|
var guestRole *model.Role
|
||||||
if guestRoleName != "" {
|
if guestRoleName != "" {
|
||||||
guestRole, err = a.GetRoleByName(guestRoleName)
|
guestRole, err = a.GetRoleByName(ctx, guestRoleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -1090,7 +1092,7 @@ func (a *App) UpdateChannelMemberRoles(channelID string, userID string, newRoles
|
|||||||
|
|
||||||
for _, roleName := range strings.Fields(newRoles) {
|
for _, roleName := range strings.Fields(newRoles) {
|
||||||
var role *model.Role
|
var role *model.Role
|
||||||
role, err = a.GetRoleByName(roleName)
|
role, err = a.GetRoleByName(context.Background(), roleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err.StatusCode = http.StatusBadRequest
|
err.StatusCode = http.StatusBadRequest
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -1813,7 +1813,7 @@ func TestPatchChannelModerationsForChannel(t *testing.T) {
|
|||||||
if higherScopedPermissionsOverriden {
|
if higherScopedPermissionsOverriden {
|
||||||
higherScopedGuestRoleName, higherScopedMemberRoleName, _, _ := th.App.GetTeamSchemeChannelRoles(channel.TeamId)
|
higherScopedGuestRoleName, higherScopedMemberRoleName, _, _ := th.App.GetTeamSchemeChannelRoles(channel.TeamId)
|
||||||
if tc.HigherScopedMemberPermissions != nil {
|
if tc.HigherScopedMemberPermissions != nil {
|
||||||
higherScopedMemberRole, err := th.App.GetRoleByName(higherScopedMemberRoleName)
|
higherScopedMemberRole, err := th.App.GetRoleByName(context.Background(), higherScopedMemberRoleName)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
originalPermissions := higherScopedMemberRole.Permissions
|
originalPermissions := higherScopedMemberRole.Permissions
|
||||||
|
|
||||||
@@ -1822,7 +1822,7 @@ func TestPatchChannelModerationsForChannel(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if tc.HigherScopedGuestPermissions != nil {
|
if tc.HigherScopedGuestPermissions != nil {
|
||||||
higherScopedGuestRole, err := th.App.GetRoleByName(higherScopedGuestRoleName)
|
higherScopedGuestRole, err := th.App.GetRoleByName(context.Background(), higherScopedGuestRoleName)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
originalPermissions := higherScopedGuestRole.Permissions
|
originalPermissions := higherScopedGuestRole.Permissions
|
||||||
|
|
||||||
@@ -1911,8 +1911,8 @@ func TestPatchChannelModerationsForChannel(t *testing.T) {
|
|||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
higherScopedGuestRoleName, higherScopedMemberRoleName, _, _ := th.App.GetTeamSchemeChannelRoles(channel.TeamId)
|
higherScopedGuestRoleName, higherScopedMemberRoleName, _, _ := th.App.GetTeamSchemeChannelRoles(channel.TeamId)
|
||||||
higherScopedMemberRole, _ := th.App.GetRoleByName(higherScopedMemberRoleName)
|
higherScopedMemberRole, _ := th.App.GetRoleByName(context.Background(), higherScopedMemberRoleName)
|
||||||
higherScopedGuestRole, _ := th.App.GetRoleByName(higherScopedGuestRoleName)
|
higherScopedGuestRole, _ := th.App.GetRoleByName(context.Background(), higherScopedGuestRoleName)
|
||||||
assert.Contains(t, higherScopedMemberRole.Permissions, createPosts)
|
assert.Contains(t, higherScopedMemberRole.Permissions, createPosts)
|
||||||
assert.Contains(t, higherScopedGuestRole.Permissions, createPosts)
|
assert.Contains(t, higherScopedGuestRole.Permissions, createPosts)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -461,7 +462,7 @@ func (th *TestHelper) CreateScheme() (*model.Scheme, []*model.Role) {
|
|||||||
|
|
||||||
var roles []*model.Role
|
var roles []*model.Role
|
||||||
for _, roleName := range roleNames {
|
for _, roleName := range roleNames {
|
||||||
role, err := th.App.GetRoleByName(roleName)
|
role, err := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@@ -652,7 +653,7 @@ func (th *TestHelper) SetupPluginAPI() *PluginAPI {
|
|||||||
func (th *TestHelper) RemovePermissionFromRole(permission string, roleName string) {
|
func (th *TestHelper) RemovePermissionFromRole(permission string, roleName string) {
|
||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
@@ -684,7 +685,7 @@ func (th *TestHelper) RemovePermissionFromRole(permission string, roleName strin
|
|||||||
func (th *TestHelper) AddPermissionToRole(permission string, roleName string) {
|
func (th *TestHelper) AddPermissionToRole(permission string, roleName string) {
|
||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ func (a *App) importRole(data *RoleImportData, dryRun bool, isSchemeRole bool) *
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
role, err := a.GetRoleByName(*data.Name)
|
role, err := a.GetRoleByName(context.Background(), *data.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
role = new(model.Role)
|
role = new(model.Role)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,42 +99,42 @@ func TestImportImportScheme(t *testing.T) {
|
|||||||
assert.Equal(t, *data.Description, scheme.Description)
|
assert.Equal(t, *data.Description, scheme.Description)
|
||||||
assert.Equal(t, *data.Scope, scheme.Scope)
|
assert.Equal(t, *data.Scope, scheme.Scope)
|
||||||
|
|
||||||
role, nErr := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
|
role, nErr := th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
||||||
@@ -156,42 +156,42 @@ func TestImportImportScheme(t *testing.T) {
|
|||||||
assert.Equal(t, *data.Description, scheme.Description)
|
assert.Equal(t, *data.Description, scheme.Description)
|
||||||
assert.Equal(t, *data.Scope, scheme.Scope)
|
assert.Equal(t, *data.Scope, scheme.Scope)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
||||||
@@ -286,42 +286,42 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
|
|||||||
assert.Equal(t, *data.Description, scheme.Description)
|
assert.Equal(t, *data.Description, scheme.Description)
|
||||||
assert.Equal(t, *data.Scope, scheme.Scope)
|
assert.Equal(t, *data.Scope, scheme.Scope)
|
||||||
|
|
||||||
role, nErr := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
|
role, nErr := th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
||||||
@@ -343,42 +343,42 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
|
|||||||
assert.Equal(t, *data.Description, scheme.Description)
|
assert.Equal(t, *data.Description, scheme.Description)
|
||||||
assert.Equal(t, *data.Scope, scheme.Scope)
|
assert.Equal(t, *data.Scope, scheme.Scope)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultTeamGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelAdminRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelUserRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
|
||||||
assert.False(t, role.BuiltIn)
|
assert.False(t, role.BuiltIn)
|
||||||
assert.True(t, role.SchemeManaged)
|
assert.True(t, role.SchemeManaged)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), scheme.DefaultChannelGuestRole)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
|
||||||
@@ -413,7 +413,7 @@ func TestImportImportRole(t *testing.T) {
|
|||||||
err := th.App.importRole(&data, true, false)
|
err := th.App.importRole(&data, true, false)
|
||||||
require.NotNil(t, err, "Should have failed to import.")
|
require.NotNil(t, err, "Should have failed to import.")
|
||||||
|
|
||||||
_, nErr := th.App.Srv().Store.Role().GetByName(rid1)
|
_, nErr := th.App.Srv().Store.Role().GetByName(context.Background(), rid1)
|
||||||
require.Error(t, nErr, "Should have failed to import.")
|
require.Error(t, nErr, "Should have failed to import.")
|
||||||
|
|
||||||
// Try importing the valid role in dryRun mode.
|
// Try importing the valid role in dryRun mode.
|
||||||
@@ -422,7 +422,7 @@ func TestImportImportRole(t *testing.T) {
|
|||||||
err = th.App.importRole(&data, true, false)
|
err = th.App.importRole(&data, true, false)
|
||||||
require.Nil(t, err, "Should have succeeded.")
|
require.Nil(t, err, "Should have succeeded.")
|
||||||
|
|
||||||
_, nErr = th.App.Srv().Store.Role().GetByName(rid1)
|
_, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), rid1)
|
||||||
require.Error(t, nErr, "Role should not have imported as we are in dry run mode.")
|
require.Error(t, nErr, "Role should not have imported as we are in dry run mode.")
|
||||||
|
|
||||||
// Try importing an invalid role.
|
// Try importing an invalid role.
|
||||||
@@ -431,7 +431,7 @@ func TestImportImportRole(t *testing.T) {
|
|||||||
err = th.App.importRole(&data, false, false)
|
err = th.App.importRole(&data, false, false)
|
||||||
require.NotNil(t, err, "Should have failed to import.")
|
require.NotNil(t, err, "Should have failed to import.")
|
||||||
|
|
||||||
_, nErr = th.App.Srv().Store.Role().GetByName(rid1)
|
_, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), rid1)
|
||||||
require.Error(t, nErr, "Role should not have imported.")
|
require.Error(t, nErr, "Role should not have imported.")
|
||||||
|
|
||||||
// Try importing a valid role with all params set.
|
// Try importing a valid role with all params set.
|
||||||
@@ -442,7 +442,7 @@ func TestImportImportRole(t *testing.T) {
|
|||||||
err = th.App.importRole(&data, false, false)
|
err = th.App.importRole(&data, false, false)
|
||||||
require.Nil(t, err, "Should have succeeded.")
|
require.Nil(t, err, "Should have succeeded.")
|
||||||
|
|
||||||
role, nErr := th.App.Srv().Store.Role().GetByName(rid1)
|
role, nErr := th.App.Srv().Store.Role().GetByName(context.Background(), rid1)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.Name, role.Name)
|
assert.Equal(t, *data.Name, role.Name)
|
||||||
@@ -460,7 +460,7 @@ func TestImportImportRole(t *testing.T) {
|
|||||||
err = th.App.importRole(&data, false, true)
|
err = th.App.importRole(&data, false, true)
|
||||||
require.Nil(t, err, "Should have succeeded. %v", err)
|
require.Nil(t, err, "Should have succeeded. %v", err)
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(rid1)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), rid1)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data.Name, role.Name)
|
assert.Equal(t, *data.Name, role.Name)
|
||||||
@@ -479,7 +479,7 @@ func TestImportImportRole(t *testing.T) {
|
|||||||
err = th.App.importRole(&data2, false, false)
|
err = th.App.importRole(&data2, false, false)
|
||||||
require.Nil(t, err, "Should have succeeded.")
|
require.Nil(t, err, "Should have succeeded.")
|
||||||
|
|
||||||
role, nErr = th.App.Srv().Store.Role().GetByName(rid1)
|
role, nErr = th.App.Srv().Store.Role().GetByName(context.Background(), rid1)
|
||||||
require.NoError(t, nErr, "Should have found the imported role.")
|
require.NoError(t, nErr, "Should have found the imported role.")
|
||||||
|
|
||||||
assert.Equal(t, *data2.Name, role.Name)
|
assert.Equal(t, *data2.Name, role.Name)
|
||||||
|
|||||||
@@ -4,12 +4,14 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/mattermost/mattermost-server/v5/model"
|
"github.com/mattermost/mattermost-server/v5/model"
|
||||||
|
"github.com/mattermost/mattermost-server/v5/store/sqlstore"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetJob(t *testing.T) {
|
func TestGetJob(t *testing.T) {
|
||||||
@@ -94,7 +96,8 @@ func TestSessionHasPermissionToCreateJob(t *testing.T) {
|
|||||||
assert.Equal(t, testCase.PermissionRequired.Id, permissionRequired.Id)
|
assert.Equal(t, testCase.PermissionRequired.Id, permissionRequired.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
role, _ := th.App.GetRoleByName(model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID)
|
ctx := sqlstore.WithMaster(context.Background())
|
||||||
|
role, _ := th.App.GetRoleByName(ctx, model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID)
|
||||||
|
|
||||||
role.Permissions = append(role.Permissions, model.PERMISSION_CREATE_POST_BLEVE_INDEXES_JOB.Id)
|
role.Permissions = append(role.Permissions, model.PERMISSION_CREATE_POST_BLEVE_INDEXES_JOB.Id)
|
||||||
|
|
||||||
@@ -179,7 +182,8 @@ func TestSessionHasPermissionToReadJob(t *testing.T) {
|
|||||||
assert.Equal(t, testCase.PermissionRequired.Id, permissionRequired.Id)
|
assert.Equal(t, testCase.PermissionRequired.Id, permissionRequired.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
role, _ := th.App.GetRoleByName(model.SYSTEM_MANAGER_ROLE_ID)
|
ctx := sqlstore.WithMaster(context.Background())
|
||||||
|
role, _ := th.App.GetRoleByName(ctx, model.SYSTEM_MANAGER_ROLE_ID)
|
||||||
|
|
||||||
role.Permissions = append(role.Permissions, model.PERMISSION_READ_DATA_RETENTION_JOB.Id)
|
role.Permissions = append(role.Permissions, model.PERMISSION_READ_DATA_RETENTION_JOB.Id)
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
@@ -37,7 +38,7 @@ func (a *App) DoAdvancedPermissionsMigration() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If this failed for reasons other than the role already existing, don't mark the migration as done.
|
// If this failed for reasons other than the role already existing, don't mark the migration as done.
|
||||||
fetchedRole, err := a.Srv().Store.Role().GetByName(role.Name)
|
fetchedRole, err := a.Srv().Store.Role().GetByName(context.Background(), role.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mlog.Critical("Failed to migrate role to database.", mlog.Err(err))
|
mlog.Critical("Failed to migrate role to database.", mlog.Err(err))
|
||||||
allSucceeded = false
|
allSucceeded = false
|
||||||
@@ -103,13 +104,13 @@ func (a *App) DoEmojisPermissionsMigration() {
|
|||||||
mlog.Info("Migrating emojis config to database.")
|
mlog.Info("Migrating emojis config to database.")
|
||||||
switch *a.Config().ServiceSettings.DEPRECATED_DO_NOT_USE_RestrictCustomEmojiCreation {
|
switch *a.Config().ServiceSettings.DEPRECATED_DO_NOT_USE_RestrictCustomEmojiCreation {
|
||||||
case model.RESTRICT_EMOJI_CREATION_ALL:
|
case model.RESTRICT_EMOJI_CREATION_ALL:
|
||||||
role, err = a.GetRoleByName(model.SYSTEM_USER_ROLE_ID)
|
role, err = a.GetRoleByName(context.Background(), model.SYSTEM_USER_ROLE_ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(err))
|
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case model.RESTRICT_EMOJI_CREATION_ADMIN:
|
case model.RESTRICT_EMOJI_CREATION_ADMIN:
|
||||||
role, err = a.GetRoleByName(model.TEAM_ADMIN_ROLE_ID)
|
role, err = a.GetRoleByName(context.Background(), model.TEAM_ADMIN_ROLE_ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(err))
|
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(err))
|
||||||
return
|
return
|
||||||
@@ -129,7 +130,7 @@ func (a *App) DoEmojisPermissionsMigration() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
systemAdminRole, err = a.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID)
|
systemAdminRole, err = a.GetRoleByName(context.Background(), model.SYSTEM_ADMIN_ROLE_ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(err))
|
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(err))
|
||||||
return
|
return
|
||||||
@@ -164,19 +165,19 @@ func (a *App) DoGuestRolesCreationMigration() {
|
|||||||
roles := model.MakeDefaultRoles()
|
roles := model.MakeDefaultRoles()
|
||||||
|
|
||||||
allSucceeded := true
|
allSucceeded := true
|
||||||
if _, err := a.Srv().Store.Role().GetByName(model.CHANNEL_GUEST_ROLE_ID); err != nil {
|
if _, err := a.Srv().Store.Role().GetByName(context.Background(), model.CHANNEL_GUEST_ROLE_ID); err != nil {
|
||||||
if _, err := a.Srv().Store.Role().Save(roles[model.CHANNEL_GUEST_ROLE_ID]); err != nil {
|
if _, err := a.Srv().Store.Role().Save(roles[model.CHANNEL_GUEST_ROLE_ID]); err != nil {
|
||||||
mlog.Critical("Failed to create new guest role to database.", mlog.Err(err))
|
mlog.Critical("Failed to create new guest role to database.", mlog.Err(err))
|
||||||
allSucceeded = false
|
allSucceeded = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err := a.Srv().Store.Role().GetByName(model.TEAM_GUEST_ROLE_ID); err != nil {
|
if _, err := a.Srv().Store.Role().GetByName(context.Background(), model.TEAM_GUEST_ROLE_ID); err != nil {
|
||||||
if _, err := a.Srv().Store.Role().Save(roles[model.TEAM_GUEST_ROLE_ID]); err != nil {
|
if _, err := a.Srv().Store.Role().Save(roles[model.TEAM_GUEST_ROLE_ID]); err != nil {
|
||||||
mlog.Critical("Failed to create new guest role to database.", mlog.Err(err))
|
mlog.Critical("Failed to create new guest role to database.", mlog.Err(err))
|
||||||
allSucceeded = false
|
allSucceeded = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err := a.Srv().Store.Role().GetByName(model.SYSTEM_GUEST_ROLE_ID); err != nil {
|
if _, err := a.Srv().Store.Role().GetByName(context.Background(), model.SYSTEM_GUEST_ROLE_ID); err != nil {
|
||||||
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_GUEST_ROLE_ID]); err != nil {
|
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_GUEST_ROLE_ID]); err != nil {
|
||||||
mlog.Critical("Failed to create new guest role to database.", mlog.Err(err))
|
mlog.Critical("Failed to create new guest role to database.", mlog.Err(err))
|
||||||
allSucceeded = false
|
allSucceeded = false
|
||||||
@@ -251,19 +252,19 @@ func (a *App) DoSystemConsoleRolesCreationMigration() {
|
|||||||
roles := model.MakeDefaultRoles()
|
roles := model.MakeDefaultRoles()
|
||||||
|
|
||||||
allSucceeded := true
|
allSucceeded := true
|
||||||
if _, err := a.Srv().Store.Role().GetByName(model.SYSTEM_MANAGER_ROLE_ID); err != nil {
|
if _, err := a.Srv().Store.Role().GetByName(context.Background(), model.SYSTEM_MANAGER_ROLE_ID); err != nil {
|
||||||
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_MANAGER_ROLE_ID]); err != nil {
|
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_MANAGER_ROLE_ID]); err != nil {
|
||||||
mlog.Critical("Failed to create new role.", mlog.Err(err), mlog.String("role", model.SYSTEM_MANAGER_ROLE_ID))
|
mlog.Critical("Failed to create new role.", mlog.Err(err), mlog.String("role", model.SYSTEM_MANAGER_ROLE_ID))
|
||||||
allSucceeded = false
|
allSucceeded = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err := a.Srv().Store.Role().GetByName(model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID); err != nil {
|
if _, err := a.Srv().Store.Role().GetByName(context.Background(), model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID); err != nil {
|
||||||
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID]); err != nil {
|
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID]); err != nil {
|
||||||
mlog.Critical("Failed to create new role.", mlog.Err(err), mlog.String("role", model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID))
|
mlog.Critical("Failed to create new role.", mlog.Err(err), mlog.String("role", model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID))
|
||||||
allSucceeded = false
|
allSucceeded = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err := a.Srv().Store.Role().GetByName(model.SYSTEM_USER_MANAGER_ROLE_ID); err != nil {
|
if _, err := a.Srv().Store.Role().GetByName(context.Background(), model.SYSTEM_USER_MANAGER_ROLE_ID); err != nil {
|
||||||
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_USER_MANAGER_ROLE_ID]); err != nil {
|
if _, err := a.Srv().Store.Role().Save(roles[model.SYSTEM_USER_MANAGER_ROLE_ID]); err != nil {
|
||||||
mlog.Critical("Failed to create new role.", mlog.Err(err), mlog.String("role", model.SYSTEM_USER_MANAGER_ROLE_ID))
|
mlog.Critical("Failed to create new role.", mlog.Err(err), mlog.String("role", model.SYSTEM_USER_MANAGER_ROLE_ID))
|
||||||
allSucceeded = false
|
allSucceeded = false
|
||||||
|
|||||||
@@ -8049,7 +8049,7 @@ func (a *OpenTracingAppLayer) GetRole(id string) (*model.Role, *model.AppError)
|
|||||||
return resultVar0, resultVar1
|
return resultVar0, resultVar1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) GetRoleByName(name string) (*model.Role, *model.AppError) {
|
func (a *OpenTracingAppLayer) GetRoleByName(ctx context.Context, name string) (*model.Role, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.GetRoleByName")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.GetRoleByName")
|
||||||
|
|
||||||
@@ -8061,7 +8061,7 @@ func (a *OpenTracingAppLayer) GetRoleByName(name string) (*model.Role, *model.Ap
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
resultVar0, resultVar1 := a.app.GetRoleByName(name)
|
resultVar0, resultVar1 := a.app.GetRoleByName(ctx, name)
|
||||||
|
|
||||||
if resultVar1 != nil {
|
if resultVar1 != nil {
|
||||||
span.LogFields(spanlog.Error(resultVar1))
|
span.LogFields(spanlog.Error(resultVar1))
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
@@ -98,7 +99,7 @@ func (a *App) ExportPermissions(w io.Writer) error {
|
|||||||
if roleName == "" {
|
if roleName == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
role, err := a.GetRoleByName(roleName)
|
role, err := a.GetRoleByName(context.Background(), roleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -171,7 +172,7 @@ func (a *App) ImportPermissions(jsonl io.Reader) error {
|
|||||||
|
|
||||||
if schemeConveyor.Name == systemSchemeName {
|
if schemeConveyor.Name == systemSchemeName {
|
||||||
for _, roleIn := range schemeConveyor.Roles {
|
for _, roleIn := range schemeConveyor.Roles {
|
||||||
dbRole, err := a.GetRoleByName(roleIn.Name)
|
dbRole, err := a.GetRoleByName(context.Background(), roleIn.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rollback(a, createdSchemeIDs)
|
rollback(a, createdSchemeIDs)
|
||||||
return errors.New(err.Message)
|
return errors.New(err.Message)
|
||||||
@@ -236,7 +237,7 @@ func rollback(a *App, createdSchemeIDs []string) {
|
|||||||
func updateRole(a *App, sc *model.SchemeConveyor, roleCreatedName, defaultRoleName string) error {
|
func updateRole(a *App, sc *model.SchemeConveyor, roleCreatedName, defaultRoleName string) error {
|
||||||
var err *model.AppError
|
var err *model.AppError
|
||||||
|
|
||||||
roleCreated, err := a.GetRoleByName(roleCreatedName)
|
roleCreated, err := a.GetRoleByName(context.Background(), roleCreatedName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New(err.Message)
|
return errors.New(err.Message)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -135,17 +136,17 @@ func TestImportPermissions(t *testing.T) {
|
|||||||
|
|
||||||
newScheme := results[0]
|
newScheme := results[0]
|
||||||
|
|
||||||
channelAdminRole, appErr := th.App.GetRoleByName(newScheme.DefaultChannelAdminRole)
|
channelAdminRole, appErr := th.App.GetRoleByName(context.Background(), newScheme.DefaultChannelAdminRole)
|
||||||
if appErr != nil {
|
if appErr != nil {
|
||||||
t.Error(appErr)
|
t.Error(appErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
channelUserRole, appErr := th.App.GetRoleByName(newScheme.DefaultChannelUserRole)
|
channelUserRole, appErr := th.App.GetRoleByName(context.Background(), newScheme.DefaultChannelUserRole)
|
||||||
if appErr != nil {
|
if appErr != nil {
|
||||||
t.Error(appErr)
|
t.Error(appErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
channelGuestRole, appErr := th.App.GetRoleByName(newScheme.DefaultChannelGuestRole)
|
channelGuestRole, appErr := th.App.GetRoleByName(context.Background(), newScheme.DefaultChannelGuestRole)
|
||||||
if appErr != nil {
|
if appErr != nil {
|
||||||
t.Error(appErr)
|
t.Error(appErr)
|
||||||
}
|
}
|
||||||
@@ -260,7 +261,7 @@ func TestMigration(t *testing.T) {
|
|||||||
th := Setup(t)
|
th := Setup(t)
|
||||||
defer th.TearDown()
|
defer th.TearDown()
|
||||||
|
|
||||||
role, err := th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID)
|
role, err := th.App.GetRoleByName(context.Background(), model.SYSTEM_ADMIN_ROLE_ID)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
assert.Contains(t, role.Permissions, model.PERMISSION_CREATE_EMOJIS.Id)
|
assert.Contains(t, role.Permissions, model.PERMISSION_CREATE_EMOJIS.Id)
|
||||||
assert.Contains(t, role.Permissions, model.PERMISSION_DELETE_EMOJIS.Id)
|
assert.Contains(t, role.Permissions, model.PERMISSION_DELETE_EMOJIS.Id)
|
||||||
@@ -269,7 +270,7 @@ func TestMigration(t *testing.T) {
|
|||||||
|
|
||||||
th.App.ResetPermissionsSystem()
|
th.App.ResetPermissionsSystem()
|
||||||
|
|
||||||
role, err = th.App.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID)
|
role, err = th.App.GetRoleByName(context.Background(), model.SYSTEM_ADMIN_ROLE_ID)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
assert.Contains(t, role.Permissions, model.PERMISSION_CREATE_EMOJIS.Id)
|
assert.Contains(t, role.Permissions, model.PERMISSION_CREATE_EMOJIS.Id)
|
||||||
assert.Contains(t, role.Permissions, model.PERMISSION_DELETE_EMOJIS.Id)
|
assert.Contains(t, role.Permissions, model.PERMISSION_DELETE_EMOJIS.Id)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
"reflect"
|
"reflect"
|
||||||
@@ -38,8 +39,8 @@ func (a *App) GetAllRoles() ([]*model.Role, *model.AppError) {
|
|||||||
return roles, nil
|
return roles, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) GetRoleByName(name string) (*model.Role, *model.AppError) {
|
func (s *Server) GetRoleByName(ctx context.Context, name string) (*model.Role, *model.AppError) {
|
||||||
role, nErr := s.Store.Role().GetByName(name)
|
role, nErr := s.Store.Role().GetByName(ctx, name)
|
||||||
if nErr != nil {
|
if nErr != nil {
|
||||||
var nfErr *store.ErrNotFound
|
var nfErr *store.ErrNotFound
|
||||||
switch {
|
switch {
|
||||||
@@ -58,8 +59,8 @@ func (s *Server) GetRoleByName(name string) (*model.Role, *model.AppError) {
|
|||||||
return role, nil
|
return role, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) GetRoleByName(name string) (*model.Role, *model.AppError) {
|
func (a *App) GetRoleByName(ctx context.Context, name string) (*model.Role, *model.AppError) {
|
||||||
return a.Srv().GetRoleByName(name)
|
return a.Srv().GetRoleByName(ctx, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) GetRolesByNames(names []string) ([]*model.Role, *model.AppError) {
|
func (a *App) GetRolesByNames(names []string) ([]*model.Role, *model.AppError) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/csv"
|
"encoding/csv"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
@@ -42,7 +43,7 @@ func TestGetRolesByNames(t *testing.T) {
|
|||||||
|
|
||||||
func TestGetRoleByName(t *testing.T) {
|
func TestGetRoleByName(t *testing.T) {
|
||||||
testPermissionInheritance(t, func(t *testing.T, th *TestHelper, testData permissionInheritanceTestData) {
|
testPermissionInheritance(t, func(t *testing.T, th *TestHelper, testData permissionInheritanceTestData) {
|
||||||
actualRole, err := th.App.GetRoleByName(testData.channelRole.Name)
|
actualRole, err := th.App.GetRoleByName(context.Background(), testData.channelRole.Name)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.NotNil(t, actualRole)
|
require.NotNil(t, actualRole)
|
||||||
require.Equal(t, testData.channelRole.Name, actualRole.Name)
|
require.Equal(t, testData.channelRole.Name, actualRole.Name)
|
||||||
@@ -149,7 +150,7 @@ func testPermissionInheritance(t *testing.T, testCallback func(t *testing.T, th
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add or remove the permission from the higher-scoped scheme
|
// add or remove the permission from the higher-scoped scheme
|
||||||
higherScopedRole, testErr := th.App.GetRoleByName(roleNameUnderTest)
|
higherScopedRole, testErr := th.App.GetRoleByName(context.Background(), roleNameUnderTest)
|
||||||
require.Nil(t, testErr)
|
require.Nil(t, testErr)
|
||||||
|
|
||||||
var higherScopedPermissions []string
|
var higherScopedPermissions []string
|
||||||
@@ -171,7 +172,7 @@ func testPermissionInheritance(t *testing.T, testCallback func(t *testing.T, th
|
|||||||
case higherScopedAdmin:
|
case higherScopedAdmin:
|
||||||
channelRoleName = channelScheme.DefaultChannelAdminRole
|
channelRoleName = channelScheme.DefaultChannelAdminRole
|
||||||
}
|
}
|
||||||
channelRole, testErr := th.App.GetRoleByName(channelRoleName)
|
channelRole, testErr := th.App.GetRoleByName(context.Background(), channelRoleName)
|
||||||
require.Nil(t, testErr)
|
require.Nil(t, testErr)
|
||||||
|
|
||||||
// add or remove the permission from the channel scheme
|
// add or remove the permission from the channel scheme
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package slashcommands
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -398,7 +399,7 @@ func (th *TestHelper) tearDown() {
|
|||||||
func (th *TestHelper) removePermissionFromRole(permission string, roleName string) {
|
func (th *TestHelper) removePermissionFromRole(permission string, roleName string) {
|
||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
@@ -430,7 +431,7 @@ func (th *TestHelper) removePermissionFromRole(permission string, roleName strin
|
|||||||
func (th *TestHelper) addPermissionToRole(permission string, roleName string) {
|
func (th *TestHelper) addPermissionToRole(permission string, roleName string) {
|
||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
|
|||||||
@@ -385,7 +385,7 @@ func (a *App) UpdateTeamMemberRoles(teamID string, userID string, newRoles strin
|
|||||||
|
|
||||||
for _, roleName := range strings.Fields(newRoles) {
|
for _, roleName := range strings.Fields(newRoles) {
|
||||||
var role *model.Role
|
var role *model.Role
|
||||||
role, err = a.GetRoleByName(roleName)
|
role, err = a.GetRoleByName(context.Background(), roleName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err.StatusCode = http.StatusBadRequest
|
err.StatusCode = http.StatusBadRequest
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -1023,9 +1023,9 @@ func TestGetViewUsersRestrictions(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("VIEW_MEMBERS permission granted at team level", func(t *testing.T) {
|
t.Run("VIEW_MEMBERS permission granted at team level", func(t *testing.T) {
|
||||||
systemUserRole, err := th.App.GetRoleByName(model.SYSTEM_USER_ROLE_ID)
|
systemUserRole, err := th.App.GetRoleByName(context.Background(), model.SYSTEM_USER_ROLE_ID)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
teamUserRole, err := th.App.GetRoleByName(model.TEAM_USER_ROLE_ID)
|
teamUserRole, err := th.App.GetRoleByName(context.Background(), model.TEAM_USER_ROLE_ID)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
require.Nil(t, removePermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id))
|
require.Nil(t, removePermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id))
|
||||||
@@ -1044,7 +1044,7 @@ func TestGetViewUsersRestrictions(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("VIEW_MEMBERS permission not granted at any level", func(t *testing.T) {
|
t.Run("VIEW_MEMBERS permission not granted at any level", func(t *testing.T) {
|
||||||
systemUserRole, err := th.App.GetRoleByName(model.SYSTEM_USER_ROLE_ID)
|
systemUserRole, err := th.App.GetRoleByName(context.Background(), model.SYSTEM_USER_ROLE_ID)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Nil(t, removePermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id))
|
require.Nil(t, removePermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id))
|
||||||
defer addPermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id)
|
defer addPermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id)
|
||||||
@@ -1059,9 +1059,9 @@ func TestGetViewUsersRestrictions(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("VIEW_MEMBERS permission for some teams but not for others", func(t *testing.T) {
|
t.Run("VIEW_MEMBERS permission for some teams but not for others", func(t *testing.T) {
|
||||||
systemUserRole, err := th.App.GetRoleByName(model.SYSTEM_USER_ROLE_ID)
|
systemUserRole, err := th.App.GetRoleByName(context.Background(), model.SYSTEM_USER_ROLE_ID)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
teamAdminRole, err := th.App.GetRoleByName(model.TEAM_ADMIN_ROLE_ID)
|
teamAdminRole, err := th.App.GetRoleByName(context.Background(), model.TEAM_ADMIN_ROLE_ID)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
require.Nil(t, removePermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id))
|
require.Nil(t, removePermission(systemUserRole, model.PERMISSION_VIEW_MEMBERS.Id))
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
package mocks
|
package mocks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
context "context"
|
||||||
|
|
||||||
httpservice "github.com/mattermost/mattermost-server/v5/services/httpservice"
|
httpservice "github.com/mattermost/mattermost-server/v5/services/httpservice"
|
||||||
mock "github.com/stretchr/testify/mock"
|
mock "github.com/stretchr/testify/mock"
|
||||||
|
|
||||||
@@ -50,13 +52,13 @@ func (_m *ServerIface) GetPluginsEnvironment() *plugin.Environment {
|
|||||||
return r0
|
return r0
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRoleByName provides a mock function with given fields: _a0
|
// GetRoleByName provides a mock function with given fields: _a0, _a1
|
||||||
func (_m *ServerIface) GetRoleByName(_a0 string) (*model.Role, *model.AppError) {
|
func (_m *ServerIface) GetRoleByName(_a0 context.Context, _a1 string) (*model.Role, *model.AppError) {
|
||||||
ret := _m.Called(_a0)
|
ret := _m.Called(_a0, _a1)
|
||||||
|
|
||||||
var r0 *model.Role
|
var r0 *model.Role
|
||||||
if rf, ok := ret.Get(0).(func(string) *model.Role); ok {
|
if rf, ok := ret.Get(0).(func(context.Context, string) *model.Role); ok {
|
||||||
r0 = rf(_a0)
|
r0 = rf(_a0, _a1)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
r0 = ret.Get(0).(*model.Role)
|
r0 = ret.Get(0).(*model.Role)
|
||||||
@@ -64,8 +66,8 @@ func (_m *ServerIface) GetRoleByName(_a0 string) (*model.Role, *model.AppError)
|
|||||||
}
|
}
|
||||||
|
|
||||||
var r1 *model.AppError
|
var r1 *model.AppError
|
||||||
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
|
if rf, ok := ret.Get(1).(func(context.Context, string) *model.AppError); ok {
|
||||||
r1 = rf(_a0)
|
r1 = rf(_a0, _a1)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(1) != nil {
|
if ret.Get(1) != nil {
|
||||||
r1 = ret.Get(1).(*model.AppError)
|
r1 = ret.Get(1).(*model.AppError)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package telemetry
|
package telemetry
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
@@ -86,7 +87,7 @@ type ServerIface interface {
|
|||||||
HttpService() httpservice.HTTPService
|
HttpService() httpservice.HTTPService
|
||||||
GetPluginsEnvironment() *plugin.Environment
|
GetPluginsEnvironment() *plugin.Environment
|
||||||
License() *model.License
|
License() *model.License
|
||||||
GetRoleByName(string) (*model.Role, *model.AppError)
|
GetRoleByName(context.Context, string) (*model.Role, *model.AppError)
|
||||||
GetSchemes(string, int, int) ([]*model.Scheme, *model.AppError)
|
GetSchemes(string, int, int) ([]*model.Scheme, *model.AppError)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -947,48 +948,48 @@ func (ts *TelemetryService) trackPermissions() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
systemAdminPermissions := ""
|
systemAdminPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.SYSTEM_ADMIN_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.SYSTEM_ADMIN_ROLE_ID); err == nil {
|
||||||
systemAdminPermissions = strings.Join(role.Permissions, " ")
|
systemAdminPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
systemUserPermissions := ""
|
systemUserPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.SYSTEM_USER_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.SYSTEM_USER_ROLE_ID); err == nil {
|
||||||
systemUserPermissions = strings.Join(role.Permissions, " ")
|
systemUserPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
teamAdminPermissions := ""
|
teamAdminPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.TEAM_ADMIN_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.TEAM_ADMIN_ROLE_ID); err == nil {
|
||||||
teamAdminPermissions = strings.Join(role.Permissions, " ")
|
teamAdminPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
teamUserPermissions := ""
|
teamUserPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.TEAM_USER_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.TEAM_USER_ROLE_ID); err == nil {
|
||||||
teamUserPermissions = strings.Join(role.Permissions, " ")
|
teamUserPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
teamGuestPermissions := ""
|
teamGuestPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.TEAM_GUEST_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.TEAM_GUEST_ROLE_ID); err == nil {
|
||||||
teamGuestPermissions = strings.Join(role.Permissions, " ")
|
teamGuestPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
channelAdminPermissions := ""
|
channelAdminPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.CHANNEL_ADMIN_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.CHANNEL_ADMIN_ROLE_ID); err == nil {
|
||||||
channelAdminPermissions = strings.Join(role.Permissions, " ")
|
channelAdminPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
channelUserPermissions := ""
|
channelUserPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.CHANNEL_USER_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.CHANNEL_USER_ROLE_ID); err == nil {
|
||||||
channelUserPermissions = strings.Join(role.Permissions, " ")
|
channelUserPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
channelGuestPermissions := ""
|
channelGuestPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(model.CHANNEL_GUEST_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.CHANNEL_GUEST_ROLE_ID); err == nil {
|
||||||
channelGuestPermissions = strings.Join(role.Permissions, " ")
|
channelGuestPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
systemManagerPermissions := ""
|
systemManagerPermissions := ""
|
||||||
systemManagerPermissionsModified := false
|
systemManagerPermissionsModified := false
|
||||||
if role, err := ts.srv.GetRoleByName(model.SYSTEM_MANAGER_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.SYSTEM_MANAGER_ROLE_ID); err == nil {
|
||||||
systemManagerPermissionsModified = len(model.PermissionsChangedByPatch(role, &model.RolePatch{Permissions: &model.SystemManagerDefaultPermissions})) > 0
|
systemManagerPermissionsModified = len(model.PermissionsChangedByPatch(role, &model.RolePatch{Permissions: &model.SystemManagerDefaultPermissions})) > 0
|
||||||
systemManagerPermissions = strings.Join(role.Permissions, " ")
|
systemManagerPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
@@ -999,7 +1000,7 @@ func (ts *TelemetryService) trackPermissions() {
|
|||||||
|
|
||||||
systemUserManagerPermissions := ""
|
systemUserManagerPermissions := ""
|
||||||
systemUserManagerPermissionsModified := false
|
systemUserManagerPermissionsModified := false
|
||||||
if role, err := ts.srv.GetRoleByName(model.SYSTEM_USER_MANAGER_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.SYSTEM_USER_MANAGER_ROLE_ID); err == nil {
|
||||||
systemUserManagerPermissionsModified = len(model.PermissionsChangedByPatch(role, &model.RolePatch{Permissions: &model.SystemUserManagerDefaultPermissions})) > 0
|
systemUserManagerPermissionsModified = len(model.PermissionsChangedByPatch(role, &model.RolePatch{Permissions: &model.SystemUserManagerDefaultPermissions})) > 0
|
||||||
systemUserManagerPermissions = strings.Join(role.Permissions, " ")
|
systemUserManagerPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
@@ -1010,7 +1011,7 @@ func (ts *TelemetryService) trackPermissions() {
|
|||||||
|
|
||||||
systemReadOnlyAdminPermissions := ""
|
systemReadOnlyAdminPermissions := ""
|
||||||
systemReadOnlyAdminPermissionsModified := false
|
systemReadOnlyAdminPermissionsModified := false
|
||||||
if role, err := ts.srv.GetRoleByName(model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), model.SYSTEM_READ_ONLY_ADMIN_ROLE_ID); err == nil {
|
||||||
systemReadOnlyAdminPermissionsModified = len(model.PermissionsChangedByPatch(role, &model.RolePatch{Permissions: &model.SystemReadOnlyAdminDefaultPermissions})) > 0
|
systemReadOnlyAdminPermissionsModified = len(model.PermissionsChangedByPatch(role, &model.RolePatch{Permissions: &model.SystemReadOnlyAdminDefaultPermissions})) > 0
|
||||||
systemReadOnlyAdminPermissions = strings.Join(role.Permissions, " ")
|
systemReadOnlyAdminPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
@@ -1042,32 +1043,32 @@ func (ts *TelemetryService) trackPermissions() {
|
|||||||
if schemes, err := ts.srv.GetSchemes(model.SCHEME_SCOPE_TEAM, 0, 100); err == nil {
|
if schemes, err := ts.srv.GetSchemes(model.SCHEME_SCOPE_TEAM, 0, 100); err == nil {
|
||||||
for _, scheme := range schemes {
|
for _, scheme := range schemes {
|
||||||
teamAdminPermissions := ""
|
teamAdminPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(scheme.DefaultTeamAdminRole); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), scheme.DefaultTeamAdminRole); err == nil {
|
||||||
teamAdminPermissions = strings.Join(role.Permissions, " ")
|
teamAdminPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
teamUserPermissions := ""
|
teamUserPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(scheme.DefaultTeamUserRole); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), scheme.DefaultTeamUserRole); err == nil {
|
||||||
teamUserPermissions = strings.Join(role.Permissions, " ")
|
teamUserPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
teamGuestPermissions := ""
|
teamGuestPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(scheme.DefaultTeamGuestRole); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), scheme.DefaultTeamGuestRole); err == nil {
|
||||||
teamGuestPermissions = strings.Join(role.Permissions, " ")
|
teamGuestPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
channelAdminPermissions := ""
|
channelAdminPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(scheme.DefaultChannelAdminRole); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), scheme.DefaultChannelAdminRole); err == nil {
|
||||||
channelAdminPermissions = strings.Join(role.Permissions, " ")
|
channelAdminPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
channelUserPermissions := ""
|
channelUserPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(scheme.DefaultChannelUserRole); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), scheme.DefaultChannelUserRole); err == nil {
|
||||||
channelUserPermissions = strings.Join(role.Permissions, " ")
|
channelUserPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
channelGuestPermissions := ""
|
channelGuestPermissions := ""
|
||||||
if role, err := ts.srv.GetRoleByName(scheme.DefaultChannelGuestRole); err == nil {
|
if role, err := ts.srv.GetRoleByName(context.Background(), scheme.DefaultChannelGuestRole); err == nil {
|
||||||
channelGuestPermissions = strings.Join(role.Permissions, " ")
|
channelGuestPermissions = strings.Join(role.Permissions, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package telemetry
|
package telemetry
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -55,17 +56,17 @@ func initializeMocks(cfg *model.Config) (*mocks.ServerIface, *storeMocks.Store,
|
|||||||
serverIfaceMock.On("GetPluginsEnvironment").Return(pluginEnv, nil)
|
serverIfaceMock.On("GetPluginsEnvironment").Return(pluginEnv, nil)
|
||||||
|
|
||||||
serverIfaceMock.On("License").Return(model.NewTestLicense(), nil)
|
serverIfaceMock.On("License").Return(model.NewTestLicense(), nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "system_admin").Return(&model.Role{Permissions: []string{"sa-test1", "sa-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "system_admin").Return(&model.Role{Permissions: []string{"sa-test1", "sa-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "system_user").Return(&model.Role{Permissions: []string{"su-test1", "su-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "system_user").Return(&model.Role{Permissions: []string{"su-test1", "su-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "system_user_manager").Return(&model.Role{Permissions: []string{"sum-test1", "sum-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "system_user_manager").Return(&model.Role{Permissions: []string{"sum-test1", "sum-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "system_manager").Return(&model.Role{Permissions: []string{"sm-test1", "sm-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "system_manager").Return(&model.Role{Permissions: []string{"sm-test1", "sm-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "system_read_only_admin").Return(&model.Role{Permissions: []string{"sra-test1", "sra-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "system_read_only_admin").Return(&model.Role{Permissions: []string{"sra-test1", "sra-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "team_admin").Return(&model.Role{Permissions: []string{"ta-test1", "ta-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "team_admin").Return(&model.Role{Permissions: []string{"ta-test1", "ta-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "team_user").Return(&model.Role{Permissions: []string{"tu-test1", "tu-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "team_user").Return(&model.Role{Permissions: []string{"tu-test1", "tu-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "team_guest").Return(&model.Role{Permissions: []string{"tg-test1", "tg-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "team_guest").Return(&model.Role{Permissions: []string{"tg-test1", "tg-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "channel_admin").Return(&model.Role{Permissions: []string{"ca-test1", "ca-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "channel_admin").Return(&model.Role{Permissions: []string{"ca-test1", "ca-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "channel_user").Return(&model.Role{Permissions: []string{"cu-test1", "cu-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "channel_user").Return(&model.Role{Permissions: []string{"cu-test1", "cu-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetRoleByName", "channel_guest").Return(&model.Role{Permissions: []string{"cg-test1", "cg-test2"}}, nil)
|
serverIfaceMock.On("GetRoleByName", context.Background(), "channel_guest").Return(&model.Role{Permissions: []string{"cg-test1", "cg-test2"}}, nil)
|
||||||
serverIfaceMock.On("GetSchemes", "team", 0, 100).Return([]*model.Scheme{}, nil)
|
serverIfaceMock.On("GetSchemes", "team", 0, 100).Return([]*model.Scheme{}, nil)
|
||||||
serverIfaceMock.On("HttpService").Return(httpservice.MakeHTTPService(configService))
|
serverIfaceMock.On("HttpService").Return(httpservice.MakeHTTPService(configService))
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ func getMockStore() *mocks.Store {
|
|||||||
mockRolesStore := mocks.RoleStore{}
|
mockRolesStore := mocks.RoleStore{}
|
||||||
mockRolesStore.On("Save", &fakeRole).Return(&model.Role{}, nil)
|
mockRolesStore.On("Save", &fakeRole).Return(&model.Role{}, nil)
|
||||||
mockRolesStore.On("Delete", "123").Return(&fakeRole, nil)
|
mockRolesStore.On("Delete", "123").Return(&fakeRole, nil)
|
||||||
mockRolesStore.On("GetByName", "role-name").Return(&fakeRole, nil)
|
mockRolesStore.On("GetByName", context.Background(), "role-name").Return(&fakeRole, nil)
|
||||||
mockRolesStore.On("GetByNames", []string{"role-name"}).Return([]*model.Role{&fakeRole}, nil)
|
mockRolesStore.On("GetByNames", []string{"role-name"}).Return([]*model.Role{&fakeRole}, nil)
|
||||||
mockRolesStore.On("PermanentDeleteAll").Return(nil)
|
mockRolesStore.On("PermanentDeleteAll").Return(nil)
|
||||||
mockStore.On("Role").Return(&mockRolesStore)
|
mockStore.On("Role").Return(&mockRolesStore)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package localcachelayer
|
package localcachelayer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -40,13 +41,13 @@ func (s LocalCacheRoleStore) Save(role *model.Role) (*model.Role, error) {
|
|||||||
return s.RoleStore.Save(role)
|
return s.RoleStore.Save(role)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s LocalCacheRoleStore) GetByName(name string) (*model.Role, error) {
|
func (s LocalCacheRoleStore) GetByName(ctx context.Context, name string) (*model.Role, error) {
|
||||||
var role *model.Role
|
var role *model.Role
|
||||||
if err := s.rootStore.doStandardReadCache(s.rootStore.roleCache, name, &role); err == nil {
|
if err := s.rootStore.doStandardReadCache(s.rootStore.roleCache, name, &role); err == nil {
|
||||||
return role, nil
|
return role, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
role, err := s.RoleStore.GetByName(name)
|
role, err := s.RoleStore.GetByName(ctx, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package localcachelayer
|
package localcachelayer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@@ -27,13 +28,13 @@ func TestRoleStoreCache(t *testing.T) {
|
|||||||
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
role, err := cachedStore.Role().GetByName("role-name")
|
role, err := cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, role, &fakeRole)
|
assert.Equal(t, role, &fakeRole)
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, role, &fakeRole)
|
assert.Equal(t, role, &fakeRole)
|
||||||
cachedStore.Role().GetByName("role-name")
|
cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -43,10 +44,10 @@ func TestRoleStoreCache(t *testing.T) {
|
|||||||
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
cachedStore.Role().GetByName("role-name")
|
cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
||||||
cachedStore.Role().Save(&fakeRole)
|
cachedStore.Role().Save(&fakeRole)
|
||||||
cachedStore.Role().GetByName("role-name")
|
cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -56,10 +57,10 @@ func TestRoleStoreCache(t *testing.T) {
|
|||||||
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
cachedStore.Role().GetByName("role-name")
|
cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
||||||
cachedStore.Role().Delete("123")
|
cachedStore.Role().Delete("123")
|
||||||
cachedStore.Role().GetByName("role-name")
|
cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -69,10 +70,10 @@ func TestRoleStoreCache(t *testing.T) {
|
|||||||
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
cachedStore.Role().GetByName("role-name")
|
cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 1)
|
||||||
cachedStore.Role().PermanentDeleteAll()
|
cachedStore.Role().PermanentDeleteAll()
|
||||||
cachedStore.Role().GetByName("role-name")
|
cachedStore.Role().GetByName(context.Background(), "role-name")
|
||||||
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2)
|
mockStore.Role().(*mocks.RoleStore).AssertNumberOfCalls(t, "GetByName", 2)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6559,7 +6559,7 @@ func (s *OpenTracingLayerRoleStore) GetAll() ([]*model.Role, error) {
|
|||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *OpenTracingLayerRoleStore) GetByName(name string) (*model.Role, error) {
|
func (s *OpenTracingLayerRoleStore) GetByName(ctx context.Context, name string) (*model.Role, error) {
|
||||||
origCtx := s.Root.Store.Context()
|
origCtx := s.Root.Store.Context()
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "RoleStore.GetByName")
|
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "RoleStore.GetByName")
|
||||||
s.Root.Store.SetContext(newCtx)
|
s.Root.Store.SetContext(newCtx)
|
||||||
@@ -6568,7 +6568,7 @@ func (s *OpenTracingLayerRoleStore) GetByName(name string) (*model.Role, error)
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
result, err := s.RoleStore.GetByName(name)
|
result, err := s.RoleStore.GetByName(ctx, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
span.LogFields(spanlog.Error(err))
|
span.LogFields(spanlog.Error(err))
|
||||||
ext.Error.Set(span, true)
|
ext.Error.Set(span, true)
|
||||||
|
|||||||
@@ -7110,11 +7110,11 @@ func (s *RetryLayerRoleStore) GetAll() ([]*model.Role, error) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *RetryLayerRoleStore) GetByName(name string) (*model.Role, error) {
|
func (s *RetryLayerRoleStore) GetByName(ctx context.Context, name string) (*model.Role, error) {
|
||||||
|
|
||||||
tries := 0
|
tries := 0
|
||||||
for {
|
for {
|
||||||
result, err := s.RoleStore.GetByName(name)
|
result, err := s.RoleStore.GetByName(ctx, name)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package sqlstore
|
package sqlstore
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -175,10 +176,9 @@ func (s *SqlRoleStore) GetAll() ([]*model.Role, error) {
|
|||||||
return roles, nil
|
return roles, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SqlRoleStore) GetByName(name string) (*model.Role, error) {
|
func (s *SqlRoleStore) GetByName(ctx context.Context, name string) (*model.Role, error) {
|
||||||
var dbRole Role
|
var dbRole Role
|
||||||
|
if err := s.DBFromContext(ctx).SelectOne(&dbRole, "SELECT * from Roles WHERE Name = :Name", map[string]interface{}{"Name": name}); err != nil {
|
||||||
if err := s.GetReplica().SelectOne(&dbRole, "SELECT * from Roles WHERE Name = :Name", map[string]interface{}{"Name": name}); err != nil {
|
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return nil, store.NewErrNotFound("Role", fmt.Sprintf("name=%s", name))
|
return nil, store.NewErrNotFound("Role", fmt.Sprintf("name=%s", name))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ func (s *SqlSchemeStore) GetByName(schemeName string) (*model.Scheme, error) {
|
|||||||
func (s *SqlSchemeStore) Delete(schemeId string) (*model.Scheme, error) {
|
func (s *SqlSchemeStore) Delete(schemeId string) (*model.Scheme, error) {
|
||||||
// Get the scheme
|
// Get the scheme
|
||||||
var scheme model.Scheme
|
var scheme model.Scheme
|
||||||
if err := s.GetReplica().SelectOne(&scheme, "SELECT * from Schemes WHERE Id = :Id", map[string]interface{}{"Id": schemeId}); err != nil {
|
if err := s.GetMaster().SelectOne(&scheme, "SELECT * from Schemes WHERE Id = :Id", map[string]interface{}{"Id": schemeId}); err != nil {
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return nil, store.NewErrNotFound("Scheme", fmt.Sprintf("schemeId=%s", schemeId))
|
return nil, store.NewErrNotFound("Scheme", fmt.Sprintf("schemeId=%s", schemeId))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -686,7 +686,7 @@ type RoleStore interface {
|
|||||||
Save(role *model.Role) (*model.Role, error)
|
Save(role *model.Role) (*model.Role, error)
|
||||||
Get(roleID string) (*model.Role, error)
|
Get(roleID string) (*model.Role, error)
|
||||||
GetAll() ([]*model.Role, error)
|
GetAll() ([]*model.Role, error)
|
||||||
GetByName(name string) (*model.Role, error)
|
GetByName(ctx context.Context, name string) (*model.Role, error)
|
||||||
GetByNames(names []string) ([]*model.Role, error)
|
GetByNames(names []string) ([]*model.Role, error)
|
||||||
Delete(roleID string) (*model.Role, error)
|
Delete(roleID string) (*model.Role, error)
|
||||||
PermanentDeleteAll() error
|
PermanentDeleteAll() error
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
package mocks
|
package mocks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
context "context"
|
||||||
|
|
||||||
model "github.com/mattermost/mattermost-server/v5/model"
|
model "github.com/mattermost/mattermost-server/v5/model"
|
||||||
mock "github.com/stretchr/testify/mock"
|
mock "github.com/stretchr/testify/mock"
|
||||||
)
|
)
|
||||||
@@ -152,13 +154,13 @@ func (_m *RoleStore) GetAll() ([]*model.Role, error) {
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetByName provides a mock function with given fields: name
|
// GetByName provides a mock function with given fields: ctx, name
|
||||||
func (_m *RoleStore) GetByName(name string) (*model.Role, error) {
|
func (_m *RoleStore) GetByName(ctx context.Context, name string) (*model.Role, error) {
|
||||||
ret := _m.Called(name)
|
ret := _m.Called(ctx, name)
|
||||||
|
|
||||||
var r0 *model.Role
|
var r0 *model.Role
|
||||||
if rf, ok := ret.Get(0).(func(string) *model.Role); ok {
|
if rf, ok := ret.Get(0).(func(context.Context, string) *model.Role); ok {
|
||||||
r0 = rf(name)
|
r0 = rf(ctx, name)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
r0 = ret.Get(0).(*model.Role)
|
r0 = ret.Get(0).(*model.Role)
|
||||||
@@ -166,8 +168,8 @@ func (_m *RoleStore) GetByName(name string) (*model.Role, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var r1 error
|
var r1 error
|
||||||
if rf, ok := ret.Get(1).(func(string) error); ok {
|
if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
|
||||||
r1 = rf(name)
|
r1 = rf(ctx, name)
|
||||||
} else {
|
} else {
|
||||||
r1 = ret.Error(1)
|
r1 = ret.Error(1)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package storetest
|
package storetest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -191,7 +192,7 @@ func testRoleStoreGetByName(t *testing.T, ss store.Store) {
|
|||||||
assert.Len(t, d1.Id, 26)
|
assert.Len(t, d1.Id, 26)
|
||||||
|
|
||||||
// Get a valid role
|
// Get a valid role
|
||||||
d2, err := ss.Role().GetByName(d1.Name)
|
d2, err := ss.Role().GetByName(context.Background(), d1.Name)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, d1.Id, d2.Id)
|
assert.Equal(t, d1.Id, d2.Id)
|
||||||
assert.Equal(t, r1.Name, d2.Name)
|
assert.Equal(t, r1.Name, d2.Name)
|
||||||
@@ -201,7 +202,7 @@ func testRoleStoreGetByName(t *testing.T, ss store.Store) {
|
|||||||
assert.Equal(t, r1.SchemeManaged, d2.SchemeManaged)
|
assert.Equal(t, r1.SchemeManaged, d2.SchemeManaged)
|
||||||
|
|
||||||
// Get an invalid role
|
// Get an invalid role
|
||||||
_, err = ss.Role().GetByName(model.NewId())
|
_, err = ss.Role().GetByName(context.Background(), model.NewId())
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,7 +310,7 @@ func testRoleStoreDelete(t *testing.T, ss store.Store) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, d2.DeleteAt)
|
assert.NotZero(t, d2.DeleteAt)
|
||||||
|
|
||||||
d3, err := ss.Role().GetByName(d1.Name)
|
d3, err := ss.Role().GetByName(context.Background(), d1.Name)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, d3.DeleteAt)
|
assert.NotZero(t, d3.DeleteAt)
|
||||||
|
|
||||||
@@ -559,13 +560,13 @@ func testRoleStoreChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest(t *t
|
|||||||
require.NoError(t, nErr)
|
require.NoError(t, nErr)
|
||||||
defer ss.Channel().Delete(channel.Id, 0)
|
defer ss.Channel().Delete(channel.Id, 0)
|
||||||
|
|
||||||
channelSchemeUserRole, err := ss.Role().GetByName(channelScheme.DefaultChannelUserRole)
|
channelSchemeUserRole, err := ss.Role().GetByName(context.Background(), channelScheme.DefaultChannelUserRole)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
channelSchemeUserRole.Permissions = []string{}
|
channelSchemeUserRole.Permissions = []string{}
|
||||||
_, err = ss.Role().Save(channelSchemeUserRole)
|
_, err = ss.Role().Save(channelSchemeUserRole)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
teamSchemeUserRole, err := ss.Role().GetByName(teamScheme.DefaultChannelUserRole)
|
teamSchemeUserRole, err := ss.Role().GetByName(context.Background(), teamScheme.DefaultChannelUserRole)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
teamSchemeUserRole.Permissions = []string{model.PERMISSION_UPLOAD_FILE.Id}
|
teamSchemeUserRole.Permissions = []string{model.PERMISSION_UPLOAD_FILE.Id}
|
||||||
_, err = ss.Role().Save(teamSchemeUserRole)
|
_, err = ss.Role().Save(teamSchemeUserRole)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package storetest
|
package storetest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@@ -108,32 +109,32 @@ func testSchemeStoreSave(t *testing.T, ss store.Store) {
|
|||||||
assert.Len(t, d1.DefaultChannelGuestRole, 26)
|
assert.Len(t, d1.DefaultChannelGuestRole, 26)
|
||||||
|
|
||||||
// Check the default roles were created correctly.
|
// Check the default roles were created correctly.
|
||||||
role1, err := ss.Role().GetByName(d1.DefaultTeamAdminRole)
|
role1, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamAdminRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role1.Permissions, []string{"delete_others_posts"})
|
assert.Equal(t, role1.Permissions, []string{"delete_others_posts"})
|
||||||
assert.True(t, role1.SchemeManaged)
|
assert.True(t, role1.SchemeManaged)
|
||||||
|
|
||||||
role2, err := ss.Role().GetByName(d1.DefaultTeamUserRole)
|
role2, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamUserRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role2.Permissions, []string{"view_team", "add_user_to_team"})
|
assert.Equal(t, role2.Permissions, []string{"view_team", "add_user_to_team"})
|
||||||
assert.True(t, role2.SchemeManaged)
|
assert.True(t, role2.SchemeManaged)
|
||||||
|
|
||||||
role3, err := ss.Role().GetByName(d1.DefaultChannelAdminRole)
|
role3, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelAdminRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role3.Permissions, []string{"manage_public_channel_members", "manage_private_channel_members"})
|
assert.Equal(t, role3.Permissions, []string{"manage_public_channel_members", "manage_private_channel_members"})
|
||||||
assert.True(t, role3.SchemeManaged)
|
assert.True(t, role3.SchemeManaged)
|
||||||
|
|
||||||
role4, err := ss.Role().GetByName(d1.DefaultChannelUserRole)
|
role4, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelUserRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role4.Permissions, []string{"read_channel", "create_post"})
|
assert.Equal(t, role4.Permissions, []string{"read_channel", "create_post"})
|
||||||
assert.True(t, role4.SchemeManaged)
|
assert.True(t, role4.SchemeManaged)
|
||||||
|
|
||||||
role5, err := ss.Role().GetByName(d1.DefaultTeamGuestRole)
|
role5, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamGuestRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role5.Permissions, []string{"view_team"})
|
assert.Equal(t, role5.Permissions, []string{"view_team"})
|
||||||
assert.True(t, role5.SchemeManaged)
|
assert.True(t, role5.SchemeManaged)
|
||||||
|
|
||||||
role6, err := ss.Role().GetByName(d1.DefaultChannelGuestRole)
|
role6, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelGuestRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role6.Permissions, []string{"read_channel", "create_post"})
|
assert.Equal(t, role6.Permissions, []string{"read_channel", "create_post"})
|
||||||
assert.True(t, role6.SchemeManaged)
|
assert.True(t, role6.SchemeManaged)
|
||||||
@@ -336,32 +337,32 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) {
|
|||||||
assert.Len(t, d1.DefaultChannelGuestRole, 26)
|
assert.Len(t, d1.DefaultChannelGuestRole, 26)
|
||||||
|
|
||||||
// Check the default roles were created correctly.
|
// Check the default roles were created correctly.
|
||||||
role1, err := ss.Role().GetByName(d1.DefaultTeamAdminRole)
|
role1, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamAdminRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role1.Permissions, []string{"delete_others_posts"})
|
assert.Equal(t, role1.Permissions, []string{"delete_others_posts"})
|
||||||
assert.True(t, role1.SchemeManaged)
|
assert.True(t, role1.SchemeManaged)
|
||||||
|
|
||||||
role2, err := ss.Role().GetByName(d1.DefaultTeamUserRole)
|
role2, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamUserRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role2.Permissions, []string{"view_team", "add_user_to_team"})
|
assert.Equal(t, role2.Permissions, []string{"view_team", "add_user_to_team"})
|
||||||
assert.True(t, role2.SchemeManaged)
|
assert.True(t, role2.SchemeManaged)
|
||||||
|
|
||||||
role3, err := ss.Role().GetByName(d1.DefaultChannelAdminRole)
|
role3, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelAdminRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role3.Permissions, []string{"manage_public_channel_members", "manage_private_channel_members"})
|
assert.Equal(t, role3.Permissions, []string{"manage_public_channel_members", "manage_private_channel_members"})
|
||||||
assert.True(t, role3.SchemeManaged)
|
assert.True(t, role3.SchemeManaged)
|
||||||
|
|
||||||
role4, err := ss.Role().GetByName(d1.DefaultChannelUserRole)
|
role4, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelUserRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role4.Permissions, []string{"read_channel", "create_post"})
|
assert.Equal(t, role4.Permissions, []string{"read_channel", "create_post"})
|
||||||
assert.True(t, role4.SchemeManaged)
|
assert.True(t, role4.SchemeManaged)
|
||||||
|
|
||||||
role5, err := ss.Role().GetByName(d1.DefaultTeamGuestRole)
|
role5, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamGuestRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role5.Permissions, []string{"view_team"})
|
assert.Equal(t, role5.Permissions, []string{"view_team"})
|
||||||
assert.True(t, role5.SchemeManaged)
|
assert.True(t, role5.SchemeManaged)
|
||||||
|
|
||||||
role6, err := ss.Role().GetByName(d1.DefaultChannelGuestRole)
|
role6, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelGuestRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, role6.Permissions, []string{"read_channel", "create_post"})
|
assert.Equal(t, role6.Permissions, []string{"read_channel", "create_post"})
|
||||||
assert.True(t, role6.SchemeManaged)
|
assert.True(t, role6.SchemeManaged)
|
||||||
@@ -372,27 +373,27 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) {
|
|||||||
assert.NotZero(t, d2.DeleteAt)
|
assert.NotZero(t, d2.DeleteAt)
|
||||||
|
|
||||||
// Check that the roles are deleted too.
|
// Check that the roles are deleted too.
|
||||||
role7, err := ss.Role().GetByName(d1.DefaultTeamAdminRole)
|
role7, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamAdminRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, role7.DeleteAt)
|
assert.NotZero(t, role7.DeleteAt)
|
||||||
|
|
||||||
role8, err := ss.Role().GetByName(d1.DefaultTeamUserRole)
|
role8, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamUserRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, role8.DeleteAt)
|
assert.NotZero(t, role8.DeleteAt)
|
||||||
|
|
||||||
role9, err := ss.Role().GetByName(d1.DefaultChannelAdminRole)
|
role9, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelAdminRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, role9.DeleteAt)
|
assert.NotZero(t, role9.DeleteAt)
|
||||||
|
|
||||||
role10, err := ss.Role().GetByName(d1.DefaultChannelUserRole)
|
role10, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelUserRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, role10.DeleteAt)
|
assert.NotZero(t, role10.DeleteAt)
|
||||||
|
|
||||||
role11, err := ss.Role().GetByName(d1.DefaultTeamGuestRole)
|
role11, err := ss.Role().GetByName(context.Background(), d1.DefaultTeamGuestRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, role11.DeleteAt)
|
assert.NotZero(t, role11.DeleteAt)
|
||||||
|
|
||||||
role12, err := ss.Role().GetByName(d1.DefaultChannelGuestRole)
|
role12, err := ss.Role().GetByName(context.Background(), d1.DefaultChannelGuestRole)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotZero(t, role12.DeleteAt)
|
assert.NotZero(t, role12.DeleteAt)
|
||||||
|
|
||||||
@@ -538,10 +539,10 @@ func testCountWithoutPermission(t *testing.T, ss store.Store) {
|
|||||||
|
|
||||||
getRoles := func(scheme *model.Scheme) (channelUser, channelGuest *model.Role) {
|
getRoles := func(scheme *model.Scheme) (channelUser, channelGuest *model.Role) {
|
||||||
var err error
|
var err error
|
||||||
channelUser, err = ss.Role().GetByName(scheme.DefaultChannelUserRole)
|
channelUser, err = ss.Role().GetByName(context.Background(), scheme.DefaultChannelUserRole)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, channelUser)
|
require.NotNil(t, channelUser)
|
||||||
channelGuest, err = ss.Role().GetByName(scheme.DefaultChannelGuestRole)
|
channelGuest, err = ss.Role().GetByName(context.Background(), scheme.DefaultChannelGuestRole)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, channelGuest)
|
require.NotNil(t, channelGuest)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -5929,10 +5929,10 @@ func (s *TimerLayerRoleStore) GetAll() ([]*model.Role, error) {
|
|||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TimerLayerRoleStore) GetByName(name string) (*model.Role, error) {
|
func (s *TimerLayerRoleStore) GetByName(ctx context.Context, name string) (*model.Role, error) {
|
||||||
start := timemodule.Now()
|
start := timemodule.Now()
|
||||||
|
|
||||||
result, err := s.RoleStore.GetByName(name)
|
result, err := s.RoleStore.GetByName(ctx, name)
|
||||||
|
|
||||||
elapsed := float64(timemodule.Since(start)) / float64(timemodule.Second)
|
elapsed := float64(timemodule.Since(start)) / float64(timemodule.Second)
|
||||||
if s.Root.Metrics != nil {
|
if s.Root.Metrics != nil {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ package web
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -677,7 +678,7 @@ func (th *TestHelper) SaveDefaultRolePermissions() map[string][]string {
|
|||||||
"channel_user",
|
"channel_user",
|
||||||
"channel_admin",
|
"channel_admin",
|
||||||
} {
|
} {
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
@@ -694,7 +695,7 @@ func (th *TestHelper) RestoreDefaultRolePermissions(data map[string][]string) {
|
|||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
for roleName, permissions := range data {
|
for roleName, permissions := range data {
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
@@ -751,7 +752,7 @@ func (th *TestHelper) RestoreDefaultRolePermissions(data map[string][]string) {
|
|||||||
func (th *TestHelper) AddPermissionToRole(permission string, roleName string) {
|
func (th *TestHelper) AddPermissionToRole(permission string, roleName string) {
|
||||||
utils.DisableDebugLogForTest()
|
utils.DisableDebugLogForTest()
|
||||||
|
|
||||||
role, err1 := th.App.GetRoleByName(roleName)
|
role, err1 := th.App.GetRoleByName(context.Background(), roleName)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
utils.EnableDebugLogForTest()
|
utils.EnableDebugLogForTest()
|
||||||
panic(err1)
|
panic(err1)
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user