diff --git a/dump.rdb b/dump.rdb new file mode 100644 index 0000000..aba4038 Binary files /dev/null and b/dump.rdb differ diff --git a/public/language/en-US/error.json b/public/language/en-US/error.json index f12e15c..ab96f8f 100644 --- a/public/language/en-US/error.json +++ b/public/language/en-US/error.json @@ -31,7 +31,7 @@ "invalid-path": "Invalid path", "folder-exists": "Folder exists", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", - "username-taken": "Username taken", + "username-taken": "Username taken. Maybe try %1", "email-taken": "Email address is already taken.", "email-nochange": "The email entered is the same as the email already on file.", "email-invited": "Email was already invited", diff --git a/public/src/client/register.js b/public/src/client/register.js index d8144d2..c151f83 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -135,7 +135,9 @@ define('forum/register', [ if (results.every(obj => obj.status === 'rejected')) { showSuccess(usernameInput, username_notify, successIcon); } else { - showError(usernameInput, username_notify, '[[error:username-taken]]'); + suggestedusernameInput = suggestUserName(usernameInput); + + showError(usernameInput, username_notify, '[[error:username-taken, ${suggestedusernameInput}]]'); } callback(); @@ -143,6 +145,33 @@ define('forum/register', [ } } + function suggestUserName(username){ + accepted = 0; + suggestedUser = username; + i = 0; + + while(accepted != 1){ + + Promise.allSettled([ + api.head(`/users/bySlug/${userslug}`, {}), + api.head(`/groups/${username}`, {}), + ]).then((results) => { + if (results.every(obj => obj.status === 'rejected')) { + accepted = 1; + } else { + + i += 1; + currentNum = i.ToString(); + suggestUser = username.concat(currentNum); + } + }); + } + return suggestUser; + + } + + + function validatePassword(password, password_confirm) { const passwordInput = $('#password'); const password_notify = $('#password-notify');