MM-15021: Adding new builtin system schema for Guests (#10601)
* MM-15021: Adding new builtin system schema for Guests * Fixing tests * Setting properly the permissions * Adding guests to sampledata * Restrict more roles updates in the app layer for guests * Adding comment to explain that permissions migration must go at the end * Setting the default guest role for custom scheme during migration * Fixing import and export * Creating scheme guest roles on migration * Fixing tests * Fixing tests * Fixing tests
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
987360f325
Коммит
584ec68755
@@ -68,6 +68,16 @@ func (a *App) ImportScheme(data *SchemeImportData, dryRun bool) *model.AppError
|
||||
if err := a.ImportRole(data.DefaultTeamUserRole, dryRun, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if data.DefaultTeamGuestRole == nil {
|
||||
data.DefaultTeamGuestRole = &RoleImportData{
|
||||
DisplayName: model.NewString("Team Guest Role for Scheme"),
|
||||
}
|
||||
}
|
||||
data.DefaultTeamGuestRole.Name = &scheme.DefaultTeamGuestRole
|
||||
if err := a.ImportRole(data.DefaultTeamGuestRole, dryRun, true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if scheme.Scope == model.SCHEME_SCOPE_TEAM || scheme.Scope == model.SCHEME_SCOPE_CHANNEL {
|
||||
@@ -80,6 +90,16 @@ func (a *App) ImportScheme(data *SchemeImportData, dryRun bool) *model.AppError
|
||||
if err := a.ImportRole(data.DefaultChannelUserRole, dryRun, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if data.DefaultChannelGuestRole == nil {
|
||||
data.DefaultChannelGuestRole = &RoleImportData{
|
||||
DisplayName: model.NewString("Channel Guest Role for Scheme"),
|
||||
}
|
||||
}
|
||||
data.DefaultChannelGuestRole.Name = &scheme.DefaultChannelGuestRole
|
||||
if err := a.ImportRole(data.DefaultChannelGuestRole, dryRun, true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -647,6 +667,7 @@ func (a *App) ImportUserTeams(user *model.User, data *[]UserTeamImportData) *mod
|
||||
}
|
||||
|
||||
var roles string
|
||||
isSchemeGuest := false
|
||||
isSchemeUser := true
|
||||
isSchemeAdmin := false
|
||||
|
||||
@@ -656,7 +677,10 @@ func (a *App) ImportUserTeams(user *model.User, data *[]UserTeamImportData) *mod
|
||||
rawRoles := *tdata.Roles
|
||||
explicitRoles := []string{}
|
||||
for _, role := range strings.Fields(rawRoles) {
|
||||
if role == model.TEAM_USER_ROLE_ID {
|
||||
if role == model.TEAM_GUEST_ROLE_ID {
|
||||
isSchemeGuest = true
|
||||
isSchemeUser = false
|
||||
} else if role == model.TEAM_USER_ROLE_ID {
|
||||
isSchemeUser = true
|
||||
} else if role == model.TEAM_ADMIN_ROLE_ID {
|
||||
isSchemeAdmin = true
|
||||
@@ -678,8 +702,8 @@ func (a *App) ImportUserTeams(user *model.User, data *[]UserTeamImportData) *mod
|
||||
}
|
||||
}
|
||||
|
||||
if member.SchemeAdmin != isSchemeAdmin || member.SchemeUser != isSchemeUser {
|
||||
a.UpdateTeamMemberSchemeRoles(team.Id, user.Id, isSchemeUser, isSchemeAdmin)
|
||||
if member.SchemeAdmin != isSchemeAdmin || member.SchemeUser != isSchemeUser || member.SchemeGuest != isSchemeGuest {
|
||||
a.UpdateTeamMemberSchemeRoles(team.Id, user.Id, isSchemeGuest, isSchemeUser, isSchemeAdmin)
|
||||
}
|
||||
|
||||
defaultChannel, err := a.GetChannelByName(model.DEFAULT_CHANNEL, team.Id, true)
|
||||
@@ -720,6 +744,7 @@ func (a *App) ImportUserChannels(user *model.User, team *model.Team, teamMember
|
||||
}
|
||||
|
||||
var roles string
|
||||
isSchemeGuest := false
|
||||
isSchemeUser := true
|
||||
isSchemeAdmin := false
|
||||
|
||||
@@ -729,7 +754,10 @@ func (a *App) ImportUserChannels(user *model.User, team *model.Team, teamMember
|
||||
rawRoles := *cdata.Roles
|
||||
explicitRoles := []string{}
|
||||
for _, role := range strings.Fields(rawRoles) {
|
||||
if role == model.CHANNEL_USER_ROLE_ID {
|
||||
if role == model.CHANNEL_GUEST_ROLE_ID {
|
||||
isSchemeGuest = true
|
||||
isSchemeUser = false
|
||||
} else if role == model.CHANNEL_USER_ROLE_ID {
|
||||
isSchemeUser = true
|
||||
} else if role == model.CHANNEL_ADMIN_ROLE_ID {
|
||||
isSchemeAdmin = true
|
||||
@@ -755,8 +783,8 @@ func (a *App) ImportUserChannels(user *model.User, team *model.Team, teamMember
|
||||
}
|
||||
}
|
||||
|
||||
if member.SchemeAdmin != isSchemeAdmin || member.SchemeUser != isSchemeUser {
|
||||
a.UpdateChannelMemberSchemeRoles(channel.Id, user.Id, isSchemeUser, isSchemeAdmin)
|
||||
if member.SchemeAdmin != isSchemeAdmin || member.SchemeUser != isSchemeUser || member.SchemeGuest != isSchemeGuest {
|
||||
a.UpdateChannelMemberSchemeRoles(channel.Id, user.Id, isSchemeGuest, isSchemeUser, isSchemeAdmin)
|
||||
}
|
||||
|
||||
if cdata.NotifyProps != nil {
|
||||
|
||||
Ссылка в новой задаче
Block a user