MM-21336: Improve channel rename restrictions (#13441)
* MM-21336: Improve channel rename restrictions Non-direct channels should not have __ in them. * Fix order of i18n extraction * Incorporate review comments Use a more relaxed check by actually checking for valid userIds. * Improve error message
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
69ab1ea1e4
Коммит
e826055519
@@ -508,7 +508,16 @@ func (a *App) GetGroupChannel(userIds []string) (*model.Channel, *model.AppError
|
|||||||
return channel, nil
|
return channel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateChannel updates a given channel by its Id. It also publishes the CHANNEL_UPDATED event.
|
||||||
func (a *App) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
|
func (a *App) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
|
||||||
|
userIds := strings.Split(channel.Name, "__")
|
||||||
|
if channel.Type != model.CHANNEL_DIRECT &&
|
||||||
|
len(userIds) == 2 &&
|
||||||
|
model.IsValidId(userIds[0]) &&
|
||||||
|
model.IsValidId(userIds[1]) {
|
||||||
|
return nil, model.NewAppError("UpdateChannel", "api.channel.update_channel.invalid_character.app_error", nil, "", http.StatusBadRequest)
|
||||||
|
}
|
||||||
|
|
||||||
_, err := a.Srv.Store.Channel().Update(channel)
|
_, err := a.Srv.Store.Channel().Update(channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -743,6 +743,7 @@ func TestRenameChannel(t *testing.T) {
|
|||||||
Name string
|
Name string
|
||||||
Channel *model.Channel
|
Channel *model.Channel
|
||||||
ExpectError bool
|
ExpectError bool
|
||||||
|
ChannelName string
|
||||||
ExpectedName string
|
ExpectedName string
|
||||||
ExpectedDisplayName string
|
ExpectedDisplayName string
|
||||||
}{
|
}{
|
||||||
@@ -751,19 +752,30 @@ func TestRenameChannel(t *testing.T) {
|
|||||||
th.createChannel(th.BasicTeam, model.CHANNEL_OPEN),
|
th.createChannel(th.BasicTeam, model.CHANNEL_OPEN),
|
||||||
false,
|
false,
|
||||||
"newchannelname",
|
"newchannelname",
|
||||||
|
"newchannelname",
|
||||||
"New Display Name",
|
"New Display Name",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Fail on rename open channel with bad name",
|
||||||
|
th.createChannel(th.BasicTeam, model.CHANNEL_OPEN),
|
||||||
|
true,
|
||||||
|
"6zii9a9g6pruzj451x3esok54h__wr4j4g8zqtnhmkw771pfpynqwo",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Fail on rename direct message channel",
|
"Fail on rename direct message channel",
|
||||||
th.CreateDmChannel(th.BasicUser2),
|
th.CreateDmChannel(th.BasicUser2),
|
||||||
true,
|
true,
|
||||||
|
"newchannelname",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Fail on rename direct message channel",
|
"Fail on rename group message channel",
|
||||||
th.CreateGroupChannel(th.BasicUser2, th.CreateUser()),
|
th.CreateGroupChannel(th.BasicUser2, th.CreateUser()),
|
||||||
true,
|
true,
|
||||||
|
"newchannelname",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
},
|
},
|
||||||
@@ -771,7 +783,7 @@ func TestRenameChannel(t *testing.T) {
|
|||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
t.Run(tc.Name, func(t *testing.T) {
|
t.Run(tc.Name, func(t *testing.T) {
|
||||||
channel, err := th.App.RenameChannel(tc.Channel, "newchannelname", "New Display Name")
|
channel, err := th.App.RenameChannel(tc.Channel, tc.ChannelName, "New Display Name")
|
||||||
if tc.ExpectError {
|
if tc.ExpectError {
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -371,6 +371,10 @@
|
|||||||
"id": "api.channel.update_channel.deleted.app_error",
|
"id": "api.channel.update_channel.deleted.app_error",
|
||||||
"translation": "The channel has been archived or deleted"
|
"translation": "The channel has been archived or deleted"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "api.channel.update_channel.invalid_character.app_error",
|
||||||
|
"translation": "Invalid channel name. User ids are not permitted in channel name for non-direct message channels."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "api.channel.update_channel.tried.app_error",
|
"id": "api.channel.update_channel.tried.app_error",
|
||||||
"translation": "Tried to perform an invalid update of the default channel {{.Channel}}"
|
"translation": "Tried to perform an invalid update of the default channel {{.Channel}}"
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user