Automatic Merge
Этот коммит содержится в:
Rodrigo Villablanca
2020-08-04 10:37:21 -04:00
коммит произвёл GitHub
родитель 7a4d31c583
Коммит 86290685ae
13 изменённых файлов: 289 добавлений и 274 удалений

Просмотреть файл

@@ -98,43 +98,43 @@ func TestImportImportScheme(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope)
role, err := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
@@ -155,43 +155,43 @@ func TestImportImportScheme(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
@@ -285,43 +285,43 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope)
role, err := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
@@ -342,43 +342,43 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged)
role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn)
@@ -412,8 +412,8 @@ func TestImportImportRole(t *testing.T) {
err := th.App.importRole(&data, true, false)
require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, err, "Should have failed to import.")
_, nErr := th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, nErr, "Should have failed to import.")
// Try importing the valid role in dryRun mode.
data.DisplayName = ptrStr("display name")
@@ -421,8 +421,8 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, true, false)
require.Nil(t, err, "Should have succeeded.")
_, err = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, err, "Role should not have imported as we are in dry run mode.")
_, nErr = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, nErr, "Role should not have imported as we are in dry run mode.")
// Try importing an invalid role.
data.DisplayName = nil
@@ -430,8 +430,8 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, false, false)
require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, err, "Role should not have imported.")
_, nErr = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, nErr, "Role should not have imported.")
// Try importing a valid role with all params set.
data.DisplayName = ptrStr("display name")
@@ -441,8 +441,8 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, false, false)
require.Nil(t, err, "Should have succeeded.")
role, err := th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, err, "Should have found the imported role.")
role, nErr := th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.Name, role.Name)
assert.Equal(t, *data.DisplayName, role.DisplayName)
@@ -459,8 +459,8 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, false, true)
require.Nil(t, err, "Should have succeeded. %v", err)
role, err = th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data.Name, role.Name)
assert.Equal(t, *data.DisplayName, role.DisplayName)
@@ -478,8 +478,8 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data2, false, false)
require.Nil(t, err, "Should have succeeded.")
role, err = th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, err, "Should have found the imported role.")
role, nErr = th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, nErr, "Should have found the imported role.")
assert.Equal(t, *data2.Name, role.Name)
assert.Equal(t, *data2.DisplayName, role.DisplayName)

Просмотреть файл

@@ -122,8 +122,8 @@ func (a *App) DoEmojisPermissionsMigration() {
if role != nil {
role.Permissions = append(role.Permissions, model.PERMISSION_CREATE_EMOJIS.Id, model.PERMISSION_DELETE_EMOJIS.Id)
if _, err = a.Srv().Store.Role().Save(role); err != nil {
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(err))
if _, nErr := a.Srv().Store.Role().Save(role); nErr != nil {
mlog.Critical("Failed to migrate emojis creation permissions from mattermost config.", mlog.Err(nErr))
return
}
}

Просмотреть файл

@@ -50,7 +50,7 @@ func (a *App) ResetPermissionsSystem() *model.AppError {
// Purge all roles from the database.
if err := a.Srv().Store.Role().PermanentDeleteAll(); err != nil {
return err
return model.NewAppError("ResetPermissionsSystem", "app.role.permanent_delete_all.app_error", nil, err.Error(), http.StatusInternalServerError)
}
// Remove the "System" table entry that marks the advanced permissions migration as done.

Просмотреть файл

@@ -4,9 +4,12 @@
package app
import (
"errors"
"net/http"
"strings"
"github.com/mattermost/mattermost-server/v5/model"
"github.com/mattermost/mattermost-server/v5/store"
)
type permissionTransformation struct {
@@ -162,7 +165,13 @@ func (a *App) doPermissionsMigration(key string, migrationMap permissionsMap) *m
for _, role := range roles {
role.Permissions = applyPermissionsMap(role, roleMap, migrationMap)
if _, err := a.Srv().Store.Role().Save(role); err != nil {
return err
var invErr *store.ErrInvalidInput
switch {
case errors.As(err, &invErr):
return model.NewAppError("doPermissionsMigration", "app.role.save.invalid_role.app_error", nil, invErr.Error(), http.StatusBadRequest)
default:
return model.NewAppError("doPermissionsMigration", "app.role.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError)
}
}
}

Просмотреть файл

@@ -4,29 +4,53 @@
package app
import (
"errors"
"net/http"
"reflect"
"strings"
"github.com/mattermost/mattermost-server/v5/model"
"github.com/mattermost/mattermost-server/v5/store"
"github.com/mattermost/mattermost-server/v5/utils"
)
func (a *App) GetRole(id string) (*model.Role, *model.AppError) {
return a.Srv().Store.Role().Get(id)
role, err := a.Srv().Store.Role().Get(id)
if err != nil {
var nfErr *store.ErrNotFound
switch {
case errors.As(err, &nfErr):
return nil, model.NewAppError("GetRole", "app.role.get.app_error", nil, nfErr.Error(), http.StatusNotFound)
default:
return nil, model.NewAppError("GetRole", "app.role.get.app_error", nil, err.Error(), http.StatusInternalServerError)
}
}
return role, nil
}
func (a *App) GetAllRoles() ([]*model.Role, *model.AppError) {
return a.Srv().Store.Role().GetAll()
roles, err := a.Srv().Store.Role().GetAll()
if err != nil {
return nil, model.NewAppError("GetAllRoles", "app.role.get_all.app_error", nil, err.Error(), http.StatusInternalServerError)
}
return roles, nil
}
func (s *Server) GetRoleByName(name string) (*model.Role, *model.AppError) {
role, err := s.Store.Role().GetByName(name)
if err != nil {
return nil, err
role, nErr := s.Store.Role().GetByName(name)
if nErr != nil {
var nfErr *store.ErrNotFound
switch {
case errors.As(nErr, &nfErr):
return nil, model.NewAppError("GetRoleByName", "app.role.get_by_name.app_error", nil, nfErr.Error(), http.StatusNotFound)
default:
return nil, model.NewAppError("GetRoleByName", "app.role.get_by_name.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
}
err = s.mergeChannelHigherScopedPermissions([]*model.Role{role})
err := s.mergeChannelHigherScopedPermissions([]*model.Role{role})
if err != nil {
return nil, err
}
@@ -39,12 +63,12 @@ func (a *App) GetRoleByName(name string) (*model.Role, *model.AppError) {
}
func (a *App) GetRolesByNames(names []string) ([]*model.Role, *model.AppError) {
roles, err := a.Srv().Store.Role().GetByNames(names)
if err != nil {
return nil, err
roles, nErr := a.Srv().Store.Role().GetByNames(names)
if nErr != nil {
return nil, model.NewAppError("GetRolesByNames", "app.role.get_by_names.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
err = a.mergeChannelHigherScopedPermissions(roles)
err := a.mergeChannelHigherScopedPermissions(roles)
if err != nil {
return nil, err
}
@@ -69,7 +93,7 @@ func (s *Server) mergeChannelHigherScopedPermissions(roles []*model.Role) *model
higherScopedPermissionsMap, err := s.Store.Role().ChannelHigherScopedPermissions(higherScopeNamesToQuery)
if err != nil {
return err
return model.NewAppError("mergeChannelHigherScopedPermissions", "app.role.get_by_names.app_error", nil, err.Error(), http.StatusInternalServerError)
}
for _, role := range roles {
@@ -112,14 +136,31 @@ func (a *App) CreateRole(role *model.Role) (*model.Role, *model.AppError) {
role.BuiltIn = false
role.SchemeManaged = false
return a.Srv().Store.Role().Save(role)
var err error
role, err = a.Srv().Store.Role().Save(role)
if err != nil {
var invErr *store.ErrInvalidInput
switch {
case errors.As(err, &invErr):
return nil, model.NewAppError("CreateRole", "app.role.save.invalid_role.app_error", nil, invErr.Error(), http.StatusBadRequest)
default:
return nil, model.NewAppError("CreateRole", "app.role.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError)
}
}
return role, nil
}
func (a *App) UpdateRole(role *model.Role) (*model.Role, *model.AppError) {
savedRole, err := a.Srv().Store.Role().Save(role)
if err != nil {
return nil, err
var invErr *store.ErrInvalidInput
switch {
case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateRole", "app.role.save.invalid_role.app_error", nil, invErr.Error(), http.StatusBadRequest)
default:
return nil, model.NewAppError("UpdateRole", "app.role.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError)
}
}
builtInChannelRoles := []string{
@@ -138,23 +179,33 @@ func (a *App) UpdateRole(role *model.Role) (*model.Role, *model.AppError) {
if utils.StringInSlice(savedRole.Name, builtInChannelRoles) {
roleRetrievalFunc = func() ([]*model.Role, *model.AppError) {
return a.Srv().Store.Role().AllChannelSchemeRoles()
roles, nErr := a.Srv().Store.Role().AllChannelSchemeRoles()
if nErr != nil {
return nil, model.NewAppError("UpdateRole", "app.role.get.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
return roles, nil
}
} else {
roleRetrievalFunc = func() ([]*model.Role, *model.AppError) {
return a.Srv().Store.Role().ChannelRolesUnderTeamRole(savedRole.Name)
roles, nErr := a.Srv().Store.Role().ChannelRolesUnderTeamRole(savedRole.Name)
if nErr != nil {
return nil, model.NewAppError("UpdateRole", "app.role.get.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
return roles, nil
}
}
impactedRoles, err := roleRetrievalFunc()
if err != nil {
return nil, err
impactedRoles, appErr := roleRetrievalFunc()
if appErr != nil {
return nil, appErr
}
impactedRoles = append(impactedRoles, role)
err = a.mergeChannelHigherScopedPermissions(impactedRoles)
if err != nil {
return nil, err
appErr = a.mergeChannelHigherScopedPermissions(impactedRoles)
if appErr != nil {
return nil, appErr
}
for _, ir := range impactedRoles {