[MM-36472] Fix inconsistencies in Roles columns (#18390)
* Fix inconsistencies in Roles columns * Add new migrations
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
305e4793c3
Коммит
177680f08c
@@ -390,7 +390,7 @@ func newSqlChannelStore(sqlStore *SqlStore, metrics einterfaces.MetricsInterface
|
||||
tablem := db.AddTableWithName(channelMember{}, "ChannelMembers").SetKeys(false, "ChannelId", "UserId")
|
||||
tablem.ColMap("ChannelId").SetMaxSize(26)
|
||||
tablem.ColMap("UserId").SetMaxSize(26)
|
||||
tablem.ColMap("Roles").SetMaxSize(64)
|
||||
tablem.ColMap("Roles").SetMaxSize(model.UserRolesMaxLength)
|
||||
tablem.ColMap("NotifyProps").SetDataType(sqlStore.jsonDataType())
|
||||
|
||||
tablePublicChannels := db.AddTableWithName(publicChannel{}, "PublicChannels").SetKeys(false, "Id")
|
||||
|
||||
@@ -32,7 +32,7 @@ func newSqlSessionStore(sqlStore *SqlStore) store.SessionStore {
|
||||
table.ColMap("Token").SetMaxSize(26)
|
||||
table.ColMap("UserId").SetMaxSize(26)
|
||||
table.ColMap("DeviceId").SetMaxSize(512)
|
||||
table.ColMap("Roles").SetMaxSize(64)
|
||||
table.ColMap("Roles").SetMaxSize(model.UserRolesMaxLength)
|
||||
table.ColMap("Props").SetDataType(sqlStore.jsonDataType())
|
||||
}
|
||||
|
||||
@@ -51,8 +51,13 @@ func (me SqlSessionStore) Save(session *model.Session) (*model.Session, error) {
|
||||
if session.Id != "" {
|
||||
return nil, store.NewErrInvalidInput("Session", "id", session.Id)
|
||||
}
|
||||
|
||||
session.PreSave()
|
||||
|
||||
if err := session.IsValid(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := me.GetMaster().Insert(session); err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to save Session with id=%s", session.Id)
|
||||
}
|
||||
@@ -228,6 +233,10 @@ func (me SqlSessionStore) UpdateLastActivityAt(sessionId string, time int64) err
|
||||
}
|
||||
|
||||
func (me SqlSessionStore) UpdateRoles(userId, roles string) (string, error) {
|
||||
if len(roles) > model.UserRolesMaxLength {
|
||||
return "", fmt.Errorf("Given session roles length (%d) exceeds max storage limit (%d)", len(roles), model.UserRolesMaxLength)
|
||||
}
|
||||
|
||||
query := "UPDATE Sessions SET Roles = :Roles WHERE UserId = :UserId"
|
||||
|
||||
_, err := me.GetMaster().Exec(query, map[string]interface{}{"Roles": roles, "UserId": userId})
|
||||
|
||||
@@ -227,7 +227,7 @@ func newSqlTeamStore(sqlStore *SqlStore) store.TeamStore {
|
||||
tablem := db.AddTableWithName(teamMember{}, "TeamMembers").SetKeys(false, "TeamId", "UserId")
|
||||
tablem.ColMap("TeamId").SetMaxSize(26)
|
||||
tablem.ColMap("UserId").SetMaxSize(26)
|
||||
tablem.ColMap("Roles").SetMaxSize(64)
|
||||
tablem.ColMap("Roles").SetMaxSize(model.UserRolesMaxLength)
|
||||
}
|
||||
|
||||
return s
|
||||
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
|
||||
const (
|
||||
CurrentSchemaVersion = Version5380
|
||||
Version610 = "6.1.0"
|
||||
Version600 = "6.0.0"
|
||||
Version5380 = "5.38.0"
|
||||
Version5370 = "5.37.0"
|
||||
@@ -212,6 +213,7 @@ func upgradeDatabase(sqlStore *SqlStore, currentModelVersionString string) error
|
||||
upgradeDatabaseToVersion537(sqlStore)
|
||||
upgradeDatabaseToVersion538(sqlStore)
|
||||
upgradeDatabaseToVersion600(sqlStore)
|
||||
upgradeDatabaseToVersion610(sqlStore)
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -1344,3 +1346,14 @@ func upgradeDatabaseToVersion600(sqlStore *SqlStore) {
|
||||
// saveSchemaVersion(sqlStore, Version600)
|
||||
// }
|
||||
}
|
||||
|
||||
func upgradeDatabaseToVersion610(sqlStore *SqlStore) {
|
||||
// if shouldPerformUpgrade(sqlStore, Version600, Version610) {
|
||||
|
||||
sqlStore.AlterColumnTypeIfExists("Sessions", "Roles", "text", "varchar(256)")
|
||||
sqlStore.AlterColumnTypeIfExists("ChannelMembers", "Roles", "text", "varchar(256)")
|
||||
sqlStore.AlterColumnTypeIfExists("TeamMembers", "Roles", "text", "varchar(256)")
|
||||
|
||||
// saveSchemaVersion(sqlStore, Version610)
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ func newSqlUserStore(sqlStore *SqlStore, metrics einterfaces.MetricsInterface) s
|
||||
table.ColMap("Nickname").SetMaxSize(64)
|
||||
table.ColMap("FirstName").SetMaxSize(64)
|
||||
table.ColMap("LastName").SetMaxSize(64)
|
||||
table.ColMap("Roles").SetMaxSize(256)
|
||||
table.ColMap("Roles").SetMaxSize(model.UserRolesMaxLength)
|
||||
table.ColMap("Props").SetDataType(sqlStore.jsonDataType())
|
||||
table.ColMap("NotifyProps").SetDataType(sqlStore.jsonDataType())
|
||||
table.ColMap("Locale").SetMaxSize(5)
|
||||
|
||||
Ссылка в новой задаче
Block a user