diff --git a/packages/server/controllers/auth.js b/packages/server/controllers/auth.js index 216b77e..87f797a 100644 --- a/packages/server/controllers/auth.js +++ b/packages/server/controllers/auth.js @@ -3,6 +3,7 @@ const { validationResult } = require("express-validator"); const userQueries = require("../data/queries/user"); const { hashPassword, compareHash } = require("../services/bcrypt"); const signToken = require("../services/signToken"); +const guestServices = require("../services/guestServices"); const checkValidationErrors = (req, res) => { const errors = validationResult(req); @@ -65,7 +66,7 @@ const login = async (req, res, next) => { const guest = async (req, res, next) => { try { // username generator returns `Guest-${num}` - const username = "guest"; + const { username, password } = guestServices.generateGuest(); // generateGuestUser(); const email = null; // id generator returns ` @@ -74,6 +75,7 @@ const guest = async (req, res, next) => { signToken(res, user); res.send(user); } catch (e) { + console.log(e); res.status(500).send({ errors: e }); } }; diff --git a/packages/server/services/guestServices.js b/packages/server/services/guestServices.js new file mode 100644 index 0000000..ca52616 --- /dev/null +++ b/packages/server/services/guestServices.js @@ -0,0 +1,25 @@ +const generateRandomPassword = () => { + const minLength = 8, + maxLength = 16, + minUTF = 33, + maxUTF = 126; + const randomize = (min, max) => Math.floor(Math.random() * (max - min) + min); + return Array(randomize(minLength, maxLength)) + .fill(0) + .map(() => String.fromCharCode(randomize(minUTF, maxUTF))) + .join(""); +}; + +const guestService = { + currentGuest: 0, + generateGuest() { + // generate unique username + const username = `Guest-${String(this.currentGuest++).padStart(6, 0)}`; + // generate random "password" + // this exists solely to add extra randomness to signed token and is not validated + const password = generateRandomPassword(); + return { username, password }; + }, +}; + +module.exports = guestService;