[MM-9777] Avoids adding custom emojis with the same name as a system emoji (#8461)

* Emoji validation fails if name exists in system emojis

* Use hashmap instead of array to improve performance

* Changed utils/StringInMap to emoji/isSystemEmoji

* Load system emojis from model/emoji.json

* Added emoji.json from webapp

* Load system emojis from emoji_data.go instead of emoji.json

* Run `gofmt -w model/emoji_data.go`
Этот коммит содержится в:
Fede
2018-03-23 14:11:43 +01:00
коммит произвёл Harrison Healey
родитель 87762ae62e
Коммит 6094778e69
3 изменённых файлов: 17 добавлений и 1 удалений

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

@@ -23,6 +23,11 @@ type Emoji struct {
Name string `json:"name"`
}
func inSystemEmoji(emojiName string) bool {
_, ok := SystemEmojis[emojiName]
return ok
}
func (emoji *Emoji) IsValid() *AppError {
if len(emoji.Id) != 26 {
return NewAppError("Emoji.IsValid", "model.emoji.id.app_error", nil, "", http.StatusBadRequest)
@@ -40,7 +45,7 @@ func (emoji *Emoji) IsValid() *AppError {
return NewAppError("Emoji.IsValid", "model.emoji.user_id.app_error", nil, "", http.StatusBadRequest)
}
if len(emoji.Name) == 0 || len(emoji.Name) > EMOJI_NAME_MAX_LENGTH || !IsValidAlphaNumHyphenUnderscore(emoji.Name, false) {
if len(emoji.Name) == 0 || len(emoji.Name) > EMOJI_NAME_MAX_LENGTH || !IsValidAlphaNumHyphenUnderscore(emoji.Name, false) || inSystemEmoji(emoji.Name) {
return NewAppError("Emoji.IsValid", "model.emoji.name.app_error", nil, "", http.StatusBadRequest)
}

6
model/emoji_data.go Обычный файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

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

@@ -80,4 +80,9 @@ func TestEmojiIsValid(t *testing.T) {
if err := emoji.IsValid(); err == nil {
t.Fatal(err)
}
emoji.Name = "croissant"
if err := emoji.IsValid(); err == nil {
t.Fatal(err)
}
}