From 6a8473a297ddeaa8dcb5a9dffc38230cea66b10c Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Thu, 29 Dec 2022 10:03:15 -0800 Subject: [PATCH] Enforce username limitations on registration for #2527 --- core/user/user.go | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/core/user/user.go b/core/user/user.go index 8ee99482b..b63c25073 100644 --- a/core/user/user.go +++ b/core/user/user.go @@ -56,23 +56,32 @@ func SetupUsers() { _datastore = data.GetDatastore() } +func generateDisplayName() string { + suggestedUsernamesList := data.GetSuggestedUsernamesList() + + if len(suggestedUsernamesList) >= minSuggestedUsernamePoolLength { + index := utils.RandomIndex(len(suggestedUsernamesList)) + return suggestedUsernamesList[index] + } else { + return utils.GeneratePhrase() + } +} + // CreateAnonymousUser will create a new anonymous user with the provided display name. func CreateAnonymousUser(displayName string) (*User, string, error) { - id := shortid.MustGenerate() - - if displayName == "" { - suggestedUsernamesList := data.GetSuggestedUsernamesList() - - if len(suggestedUsernamesList) >= minSuggestedUsernamePoolLength { - index := utils.RandomIndex(len(suggestedUsernamesList)) - displayName = suggestedUsernamesList[index] - } else { - displayName = utils.GeneratePhrase() + // Try to assign a name that was requested. + if displayName != "" { + // If name isn't available then generate a random one. + if available, _ := IsDisplayNameAvailable(displayName); !available { + displayName = generateDisplayName() } + } else { + displayName = generateDisplayName() } displayColor := utils.GenerateRandomDisplayColor(config.MaxUserColor) + id := shortid.MustGenerate() user := &User{ ID: id, DisplayName: displayName,