From eec99669c8b6d08bf4153a58aa72dabd5aacdae0 Mon Sep 17 00:00:00 2001 From: MinusGix Date: Fri, 6 Mar 2020 14:41:09 -0600 Subject: Deduplicate verifyNickname into a single importable function --- server/src/commands/core/changenick.js | 5 ++--- server/src/commands/core/invite.js | 5 ++--- server/src/commands/core/join.js | 4 +--- server/src/commands/core/whisper.js | 5 +++-- server/src/commands/utility/UAC/_info.js | 12 +++++++++++- 5 files changed, 19 insertions(+), 12 deletions(-) (limited to 'server/src/commands') diff --git a/server/src/commands/core/changenick.js b/server/src/commands/core/changenick.js index 6dbdfd2..6e9e59f 100644 --- a/server/src/commands/core/changenick.js +++ b/server/src/commands/core/changenick.js @@ -2,8 +2,7 @@ Description: Allows calling client to change their current nickname */ -// module support functions -const verifyNickname = (nick) => /^[a-zA-Z0-9_]{1,24}$/.test(nick); +import * as UAC from "../utility/UAC/_info"; // module main export async function run(core, server, socket, data) { @@ -21,7 +20,7 @@ export async function run(core, server, socket, data) { // make sure requested nickname meets standards const newNick = data.nick.trim(); - if (!verifyNickname(newNick)) { + if (!UAC.verifyNickname(newNick)) { return server.reply({ cmd: 'warn', text: 'Nickname must consist of up to 24 letters, numbers, and underscores', diff --git a/server/src/commands/core/invite.js b/server/src/commands/core/invite.js index b594586..6d7c2af 100644 --- a/server/src/commands/core/invite.js +++ b/server/src/commands/core/invite.js @@ -2,8 +2,7 @@ Description: Generates a semi-unique channel name then broadcasts it to each client */ -// module support functions -const verifyNickname = (nick) => /^[a-zA-Z0-9_]{1,24}$/.test(nick); +import * as UAC from "../utility/UAC/_info"; // module main export async function run(core, server, socket, data) { @@ -16,7 +15,7 @@ export async function run(core, server, socket, data) { } // verify user input - if (typeof data.nick !== 'string' || !verifyNickname(data.nick)) { + if (typeof data.nick !== 'string' || !UAC.verifyNickname(data.nick)) { return true; } diff --git a/server/src/commands/core/join.js b/server/src/commands/core/join.js index 3a59a6d..7e98721 100644 --- a/server/src/commands/core/join.js +++ b/server/src/commands/core/join.js @@ -13,8 +13,6 @@ const hash = (password) => { return sha.digest('base64').substr(0, 6); }; -const verifyNickname = (nick) => /^[a-zA-Z0-9_]{1,24}$/.test(nick); - // exposed "login" function to allow hooks to verify user join events // returns object containing user info or string if error export function parseNickname(core, data) { @@ -29,7 +27,7 @@ export function parseNickname(core, data) { const nickArray = data.nick.split('#', 2); userInfo.nick = nickArray[0].trim(); - if (!verifyNickname(userInfo.nick)) { + if (!UAC.verifyNickname(userInfo.nick)) { // return error as string return 'Nickname must consist of up to 24 letters, numbers, and underscores'; } diff --git a/server/src/commands/core/whisper.js b/server/src/commands/core/whisper.js index decf765..e574e1f 100644 --- a/server/src/commands/core/whisper.js +++ b/server/src/commands/core/whisper.js @@ -2,8 +2,9 @@ Description: Display text on targets screen that only they can see */ +import * as UAC from "../utility/UAC/_info"; + // module support functions -const verifyNickname = (nick) => /^[a-zA-Z0-9_]{1,24}$/.test(nick); const parseText = (text) => { // verifies user input is text @@ -41,7 +42,7 @@ export async function run(core, server, socket, payload) { } const targetNick = payload.nick; - if (!verifyNickname(targetNick)) { + if (!UAC.verifyNickname(targetNick)) { return true; } diff --git a/server/src/commands/utility/UAC/_info.js b/server/src/commands/utility/UAC/_info.js index 6da85d5..d34a384 100644 --- a/server/src/commands/utility/UAC/_info.js +++ b/server/src/commands/utility/UAC/_info.js @@ -1,6 +1,6 @@ /** * User Account Control information containing level constants - * and simple helper functions used to verify permissions + * and simple helper functions related to users * @property {Object} levels - Defines labels for default permission ranges * @author MinusGix ( https://github.com/MinusGix ) * @version v1.0.0 @@ -83,3 +83,13 @@ export function isChannelTrusted(level) { export function isTrustedUser(level) { return level >= levels.trustedUser; } + +/** + * Returns true if the nickname is valid + * @public + * @param {String} nick + * @return {boolean} + */ +export function verifyNickname (nick) { + return /^[a-zA-Z0-9_]{1,24}$/.test(nick); +} \ No newline at end of file -- cgit v1.2.1