diff --git a/models/User.model.js b/models/User.model.js index 9cdd3a3ce4..d84969204b 100644 --- a/models/User.model.js +++ b/models/User.model.js @@ -4,10 +4,27 @@ const { Schema, model } = require("mongoose"); const userSchema = new Schema({ username: { type: String, - unique: true + required: true, + unique: true, + trim: true, }, - password: String -}); + email: { + type: String, + required: true, + unique: true, + trim: true, + lowercase: true, + }, + password: { + type: String, + required: true, + }, +}, +{ + // this second object adds extra properties: `createdAt` and `updatedAt` + timestamps: true, +} +); const User = model("User", userSchema); diff --git a/package.json b/package.json index 19489d9695..a7763e69e4 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,14 @@ "private": true, "scripts": { "start": "node server.js", - "dev": "nodemon server.js" + "dev": "nodemon server.js -e hbs, css" }, "dependencies": { + "bcryptjs": "^2.4.3", + "connect-mongo": "^5.1.0", "cookie-parser": "^1.4.5", "dotenv": "^8.2.0", - "express": "^4.17.1", + "express": "^4.19.2", "hbs": "^4.1.1", "mongoose": "^6.1.2", "morgan": "^1.10.0", diff --git a/routes/index.js b/routes/index.js index 81c2396ceb..910788ddb4 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,8 +1,25 @@ const router = require("express").Router(); +const User = require("../models/User.model"); +const bcrypt = require("bcryptjs") /* GET home page */ router.get("/", (req, res, next) => { - res.render("index"); + res.render("auth/signup"); +}); + +router.post('/signup', async (req, res) => { + const { username, email, password } = req.body; + if (!username || !email || !password) { + return res.status(400).json({ message: 'Todos los campos son obligatorios.' }); + } + try { + const salt = await bcrypt.genSalt(10); + const hashedPassword = await bcrypt.hash(password, salt); + const newUser = await User.create({ username, email, password: hashedPassword }); + res.status(201).json(newUser); + } catch (error) { + res.status(500).json({ message: 'Error al crear el usuario.' }); + } }); module.exports = router; diff --git a/views/auth/login.hbs b/views/auth/login.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/views/auth/signup.hbs b/views/auth/signup.hbs new file mode 100644 index 0000000000..29286d812f --- /dev/null +++ b/views/auth/signup.hbs @@ -0,0 +1,14 @@ +

Sign up to our app

+ +
+ + + + +
\ No newline at end of file diff --git a/views/index.hbs b/views/index.hbs index 1f308fdb35..0230acf8b6 100644 --- a/views/index.hbs +++ b/views/index.hbs @@ -1,2 +1,2 @@

{{title}}

-

Welcome to {{title}}

+

Welcome to {{title}}, {{user.username}}