Refactors migrations check. (#8814)
Этот коммит содержится в:
коммит произвёл
Jesús Espino
родитель
c6ba5c32d6
Коммит
eb78d273f3
@@ -12,8 +12,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/mattermost/mattermost-server/model"
|
"github.com/mattermost/mattermost-server/model"
|
||||||
"github.com/mattermost/mattermost-server/utils"
|
"github.com/mattermost/mattermost-server/utils"
|
||||||
)
|
)
|
||||||
@@ -1892,16 +1890,7 @@ func TestUpdateChannelScheme(t *testing.T) {
|
|||||||
|
|
||||||
th.App.SetLicense(model.NewTestLicense(""))
|
th.App.SetLicense(model.NewTestLicense(""))
|
||||||
|
|
||||||
// Mark the migration as done.
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
// Un-mark the migration at the end of the test.
|
|
||||||
defer func() {
|
|
||||||
res := <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
team := &model.Team{
|
team := &model.Team{
|
||||||
DisplayName: "Name",
|
DisplayName: "Name",
|
||||||
|
|||||||
@@ -18,10 +18,7 @@ func TestCreateScheme(t *testing.T) {
|
|||||||
|
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
// Mark the migration as done.
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
// Basic test of creating a team scheme.
|
// Basic test of creating a team scheme.
|
||||||
scheme1 := &model.Scheme{
|
scheme1 := &model.Scheme{
|
||||||
@@ -137,9 +134,7 @@ func TestCreateScheme(t *testing.T) {
|
|||||||
_, r6 := th.SystemAdminClient.CreateScheme(scheme6)
|
_, r6 := th.SystemAdminClient.CreateScheme(scheme6)
|
||||||
CheckNotImplementedStatus(t, r6)
|
CheckNotImplementedStatus(t, r6)
|
||||||
|
|
||||||
// Mark the migration as not done.
|
th.App.SetPhase2PermissionsMigrationStatus(false)
|
||||||
res = <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
th.LoginSystemAdmin()
|
th.LoginSystemAdmin()
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
@@ -168,9 +163,7 @@ func TestGetScheme(t *testing.T) {
|
|||||||
Scope: model.SCHEME_SCOPE_TEAM,
|
Scope: model.SCHEME_SCOPE_TEAM,
|
||||||
}
|
}
|
||||||
|
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
s1, r1 := th.SystemAdminClient.CreateScheme(scheme1)
|
s1, r1 := th.SystemAdminClient.CreateScheme(scheme1)
|
||||||
CheckNoError(t, r1)
|
CheckNoError(t, r1)
|
||||||
@@ -210,9 +203,7 @@ func TestGetScheme(t *testing.T) {
|
|||||||
_, r7 := th.Client.GetScheme(s1.Id)
|
_, r7 := th.Client.GetScheme(s1.Id)
|
||||||
CheckForbiddenStatus(t, r7)
|
CheckForbiddenStatus(t, r7)
|
||||||
|
|
||||||
// Mark the migration as not done.
|
th.App.SetPhase2PermissionsMigrationStatus(false)
|
||||||
res = <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
_, r8 := th.SystemAdminClient.GetScheme(s1.Id)
|
_, r8 := th.SystemAdminClient.GetScheme(s1.Id)
|
||||||
CheckNotImplementedStatus(t, r8)
|
CheckNotImplementedStatus(t, r8)
|
||||||
@@ -238,9 +229,7 @@ func TestGetSchemes(t *testing.T) {
|
|||||||
Scope: model.SCHEME_SCOPE_CHANNEL,
|
Scope: model.SCHEME_SCOPE_CHANNEL,
|
||||||
}
|
}
|
||||||
|
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
_, r1 := th.SystemAdminClient.CreateScheme(scheme1)
|
_, r1 := th.SystemAdminClient.CreateScheme(scheme1)
|
||||||
CheckNoError(t, r1)
|
CheckNoError(t, r1)
|
||||||
@@ -277,9 +266,7 @@ func TestGetSchemes(t *testing.T) {
|
|||||||
_, r8 := th.Client.GetSchemes("", 0, 100)
|
_, r8 := th.Client.GetSchemes("", 0, 100)
|
||||||
CheckForbiddenStatus(t, r8)
|
CheckForbiddenStatus(t, r8)
|
||||||
|
|
||||||
// Mark the migration as not done.
|
th.App.SetPhase2PermissionsMigrationStatus(false)
|
||||||
res = <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
_, r9 := th.SystemAdminClient.GetSchemes("", 0, 100)
|
_, r9 := th.SystemAdminClient.GetSchemes("", 0, 100)
|
||||||
CheckNotImplementedStatus(t, r9)
|
CheckNotImplementedStatus(t, r9)
|
||||||
@@ -291,9 +278,7 @@ func TestGetTeamsForScheme(t *testing.T) {
|
|||||||
|
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
scheme1 := &model.Scheme{
|
scheme1 := &model.Scheme{
|
||||||
DisplayName: model.NewId(),
|
DisplayName: model.NewId(),
|
||||||
@@ -376,9 +361,7 @@ func TestGetTeamsForScheme(t *testing.T) {
|
|||||||
_, ri5 := th.SystemAdminClient.GetTeamsForScheme(scheme2.Id, 0, 100)
|
_, ri5 := th.SystemAdminClient.GetTeamsForScheme(scheme2.Id, 0, 100)
|
||||||
CheckBadRequestStatus(t, ri5)
|
CheckBadRequestStatus(t, ri5)
|
||||||
|
|
||||||
// Mark the migration as not done.
|
th.App.SetPhase2PermissionsMigrationStatus(false)
|
||||||
res = <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
_, ri6 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
|
_, ri6 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
|
||||||
CheckNotImplementedStatus(t, ri6)
|
CheckNotImplementedStatus(t, ri6)
|
||||||
@@ -390,9 +373,7 @@ func TestGetChannelsForScheme(t *testing.T) {
|
|||||||
|
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
scheme1 := &model.Scheme{
|
scheme1 := &model.Scheme{
|
||||||
DisplayName: model.NewId(),
|
DisplayName: model.NewId(),
|
||||||
@@ -477,9 +458,7 @@ func TestGetChannelsForScheme(t *testing.T) {
|
|||||||
_, ri5 := th.SystemAdminClient.GetChannelsForScheme(scheme2.Id, 0, 100)
|
_, ri5 := th.SystemAdminClient.GetChannelsForScheme(scheme2.Id, 0, 100)
|
||||||
CheckBadRequestStatus(t, ri5)
|
CheckBadRequestStatus(t, ri5)
|
||||||
|
|
||||||
// Mark the migration as not done.
|
th.App.SetPhase2PermissionsMigrationStatus(false)
|
||||||
res = <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
_, ri6 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
|
_, ri6 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
|
||||||
CheckNotImplementedStatus(t, ri6)
|
CheckNotImplementedStatus(t, ri6)
|
||||||
@@ -491,10 +470,7 @@ func TestPatchScheme(t *testing.T) {
|
|||||||
|
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
// Mark the migration as done.
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
// Basic test of creating a team scheme.
|
// Basic test of creating a team scheme.
|
||||||
scheme1 := &model.Scheme{
|
scheme1 := &model.Scheme{
|
||||||
@@ -584,9 +560,7 @@ func TestPatchScheme(t *testing.T) {
|
|||||||
_, r11 := th.SystemAdminClient.PatchScheme(s6.Id, schemePatch)
|
_, r11 := th.SystemAdminClient.PatchScheme(s6.Id, schemePatch)
|
||||||
CheckNotImplementedStatus(t, r11)
|
CheckNotImplementedStatus(t, r11)
|
||||||
|
|
||||||
// Mark the migration as not done.
|
th.App.SetPhase2PermissionsMigrationStatus(false)
|
||||||
res = <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
th.LoginSystemAdmin()
|
th.LoginSystemAdmin()
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
@@ -602,16 +576,7 @@ func TestDeleteScheme(t *testing.T) {
|
|||||||
t.Run("ValidTeamScheme", func(t *testing.T) {
|
t.Run("ValidTeamScheme", func(t *testing.T) {
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
// Mark the migration as done.
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
// Un-mark the migration at the end of the test.
|
|
||||||
defer func() {
|
|
||||||
res := <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
// Create a team scheme.
|
// Create a team scheme.
|
||||||
scheme1 := &model.Scheme{
|
scheme1 := &model.Scheme{
|
||||||
@@ -640,7 +605,7 @@ func TestDeleteScheme(t *testing.T) {
|
|||||||
assert.Zero(t, role4.DeleteAt)
|
assert.Zero(t, role4.DeleteAt)
|
||||||
|
|
||||||
// Make sure this scheme is in use by a team.
|
// Make sure this scheme is in use by a team.
|
||||||
res = <-th.App.Srv.Store.Team().Save(&model.Team{
|
res := <-th.App.Srv.Store.Team().Save(&model.Team{
|
||||||
Name: model.NewId(),
|
Name: model.NewId(),
|
||||||
DisplayName: model.NewId(),
|
DisplayName: model.NewId(),
|
||||||
Email: model.NewId() + "@nowhere.com",
|
Email: model.NewId() + "@nowhere.com",
|
||||||
@@ -678,16 +643,7 @@ func TestDeleteScheme(t *testing.T) {
|
|||||||
t.Run("ValidChannelScheme", func(t *testing.T) {
|
t.Run("ValidChannelScheme", func(t *testing.T) {
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
// Mark the migration as done.
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
// Un-mark the migration at the end of the test.
|
|
||||||
defer func() {
|
|
||||||
res := <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
// Create a channel scheme.
|
// Create a channel scheme.
|
||||||
scheme1 := &model.Scheme{
|
scheme1 := &model.Scheme{
|
||||||
@@ -710,7 +666,7 @@ func TestDeleteScheme(t *testing.T) {
|
|||||||
assert.Zero(t, role4.DeleteAt)
|
assert.Zero(t, role4.DeleteAt)
|
||||||
|
|
||||||
// Make sure this scheme is in use by a team.
|
// Make sure this scheme is in use by a team.
|
||||||
res = <-th.App.Srv.Store.Channel().Save(&model.Channel{
|
res := <-th.App.Srv.Store.Channel().Save(&model.Channel{
|
||||||
TeamId: model.NewId(),
|
TeamId: model.NewId(),
|
||||||
DisplayName: model.NewId(),
|
DisplayName: model.NewId(),
|
||||||
Name: model.NewId(),
|
Name: model.NewId(),
|
||||||
@@ -742,10 +698,7 @@ func TestDeleteScheme(t *testing.T) {
|
|||||||
t.Run("FailureCases", func(t *testing.T) {
|
t.Run("FailureCases", func(t *testing.T) {
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
// Mark the migration as done.
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
scheme1 := &model.Scheme{
|
scheme1 := &model.Scheme{
|
||||||
DisplayName: model.NewId(),
|
DisplayName: model.NewId(),
|
||||||
@@ -774,9 +727,7 @@ func TestDeleteScheme(t *testing.T) {
|
|||||||
_, r5 := th.SystemAdminClient.DeleteScheme(s1.Id)
|
_, r5 := th.SystemAdminClient.DeleteScheme(s1.Id)
|
||||||
CheckNotImplementedStatus(t, r5)
|
CheckNotImplementedStatus(t, r5)
|
||||||
|
|
||||||
// Test with migration not being done.
|
th.App.SetPhase2PermissionsMigrationStatus(false)
|
||||||
res = <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
th.App.SetLicense(model.NewTestLicense("custom_permissions_schemes"))
|
||||||
|
|
||||||
|
|||||||
@@ -2059,16 +2059,7 @@ func TestUpdateTeamScheme(t *testing.T) {
|
|||||||
|
|
||||||
th.App.SetLicense(model.NewTestLicense(""))
|
th.App.SetLicense(model.NewTestLicense(""))
|
||||||
|
|
||||||
// Mark the migration as done.
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
<-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
res := <-th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
|
|
||||||
// Un-mark the migration at the end of the test.
|
|
||||||
defer func() {
|
|
||||||
res := <-th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
|
||||||
assert.Nil(t, res.Err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
team := &model.Team{
|
team := &model.Team{
|
||||||
DisplayName: "Name",
|
DisplayName: "Name",
|
||||||
|
|||||||
13
app/app.go
13
app/app.go
@@ -92,6 +92,8 @@ type App struct {
|
|||||||
clientConfig map[string]string
|
clientConfig map[string]string
|
||||||
clientConfigHash string
|
clientConfigHash string
|
||||||
diagnosticId string
|
diagnosticId string
|
||||||
|
|
||||||
|
phase2PermissionsMigrationComplete bool
|
||||||
}
|
}
|
||||||
|
|
||||||
var appCount = 0
|
var appCount = 0
|
||||||
@@ -588,3 +590,14 @@ func (a *App) DoAdvancedPermissionsMigration() {
|
|||||||
mlog.Critical(fmt.Sprint(result.Err))
|
mlog.Critical(fmt.Sprint(result.Err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *App) SetPhase2PermissionsMigrationStatus(isComplete bool) error {
|
||||||
|
if !isComplete {
|
||||||
|
res := <-a.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
|
||||||
|
if res.Err != nil {
|
||||||
|
return res.Err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
a.phase2PermissionsMigrationComplete = isComplete
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -142,10 +142,16 @@ func (a *App) GetChannelsForScheme(scheme *model.Scheme, offset int, limit int)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) IsPhase2MigrationCompleted() *model.AppError {
|
func (a *App) IsPhase2MigrationCompleted() *model.AppError {
|
||||||
|
if a.phase2PermissionsMigrationComplete {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
if result := <-a.Srv.Store.System().GetByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2); result.Err != nil {
|
if result := <-a.Srv.Store.System().GetByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2); result.Err != nil {
|
||||||
return model.NewAppError("App.IsPhase2MigrationCompleted", "app.schemes.is_phase_2_migration_completed.not_completed.app_error", nil, result.Err.Error(), http.StatusNotImplemented)
|
return model.NewAppError("App.IsPhase2MigrationCompleted", "app.schemes.is_phase_2_migration_completed.not_completed.app_error", nil, result.Err.Error(), http.StatusNotImplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.phase2PermissionsMigrationComplete = true
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user