| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import User from "../models/User.js";
- import {HttpError} from "../HttpError.js";
- import bcrypt from "bcrypt";
- import crypto from "crypto";
- const createRoute = async (req, res, next)=>{
- try{
- const user = await createUser(req.body);
- await user.save();
- res.json(responseUser(user));
- }catch(e){next(e)}
- }
- /*
- Create a new User object
- @param {Object} - Request body with user data
- @return {User} - User object
- */
- const createUser = async (data)=>{
- return new User({
- name: data.name,
- email: data.email.toLowerCase(),
- password: await hashPass(data.pass),
- workouts: [],
- uuid: createUuid()
- });
- }
- /*
- Hash a password
- @param {String} - Password to hash
- @return {String} - Hashed password
- */
- const hashPass = async (password)=>{
- return await bcrypt.hash(password, 10);
- }
- /*
- Create user object for sending to frontend
- @param {User} - User object
- @return {User} - Modified User object
- */
- const responseUser = (user)=>{
- return {
- id: user._id,
- name: user.name,
- email: user.email,
- workouts: user.workouts
- };
- }
- /*
- Create a new UUID token
- @return {String} - UUID token
- */
- const createUuid = ()=>{
- return crypto.randomUUID();
- }
- export {
- createRoute
- }
|