From d9288fc316b7b38393889dd8ad7416c1a7e9775b Mon Sep 17 00:00:00 2001 From: Juan Manuel Date: Sat, 23 Nov 2024 09:07:03 +0100 Subject: [PATCH 1/4] 1,2 and bonus completed --- app.js | 2 +- controllers/auth.controller.js | 53 ++++++++++++++++++++++++++++++++++ controllers/misc.controller.js | 3 ++ controllers/user.controller.js | 0 models/User.model.js | 42 +++++++++++++++++++++++---- package.json | 1 + routes/index.js | 8 ----- routes/routes.js | 20 +++++++++++++ views/auth/login.hbs | 26 +++++++++++++++++ views/auth/register.hbs | 36 +++++++++++++++++++++++ views/layout.hbs | 6 ++++ 11 files changed, 182 insertions(+), 15 deletions(-) create mode 100644 controllers/auth.controller.js create mode 100644 controllers/misc.controller.js create mode 100644 controllers/user.controller.js delete mode 100644 routes/index.js create mode 100644 routes/routes.js create mode 100644 views/auth/login.hbs create mode 100644 views/auth/register.hbs diff --git a/app.js b/app.js index 2ecc9f2220..11022b18a5 100644 --- a/app.js +++ b/app.js @@ -25,7 +25,7 @@ const capitalized = string => string[0].toUpperCase() + string.slice(1).toLowerC app.locals.title = `${capitalized(projectName)}- Generated with Ironlauncher`; // 👇 Start handling routes here -const index = require('./routes/index'); +const index = require('./routes/routes'); app.use('/', index); // ❗ To handle errors. Routes that don't exist or errors that you handle in specific routes diff --git a/controllers/auth.controller.js b/controllers/auth.controller.js new file mode 100644 index 0000000000..2d81a1f6e1 --- /dev/null +++ b/controllers/auth.controller.js @@ -0,0 +1,53 @@ +const User = require("../models/User.model"); +const mongoose = require("mongoose"); + + +module.exports.register = (req, res, next) => { + res.render("auth/register") +} + +module.exports.doRegister = (req, res, next) => { + User.create(req.body) + .then((user) => { + user.checkPassword(req.body.password); + res.redirect("/login"); + }) + .catch((err) => { + if (err instanceof mongoose.Error.ValidationError) { + res.render("auth/register", { + user: { + email: req.body.email, + }, + errors: err.errors, + }); + } else { + next(err); + } + }); + }; + +module.exports.login = (req, res, next) => { + res.render("auth/login"); + }; + module.exports.doLogin = (req, res, next) => { + const { email, password } = req.body; + + User.findOne({ email }) + .then((user) => { + if (!user) { + res.redirect("/login"); + } else { + user.checkPassword(password).then((match) => { + if (match) { + res.redirect("/profile"); + } else { + res.redirect("/login"); + } + }); + } + }) + .catch((err) => { + console.error(err); + }); + }; + \ No newline at end of file diff --git a/controllers/misc.controller.js b/controllers/misc.controller.js new file mode 100644 index 0000000000..78d19aa1df --- /dev/null +++ b/controllers/misc.controller.js @@ -0,0 +1,3 @@ +module.exports.home= (req, res, next) => { + res.render("index"); +}; diff --git a/controllers/user.controller.js b/controllers/user.controller.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/models/User.model.js b/models/User.model.js index 9cdd3a3ce4..e3b66e4e6a 100644 --- a/models/User.model.js +++ b/models/User.model.js @@ -1,14 +1,44 @@ -const { Schema, model } = require("mongoose"); +const mongoose = require("mongoose"); +const bcrypt = require("bcrypt"); + +const EMAIL_PATTERN = + /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; + // TODO: Please make sure you edit the user model to whatever makes sense in this case -const userSchema = new Schema({ - username: { +const UserSchema = new mongoose.Schema({ + email: { type: String, - unique: true + required: [true, "Email is required"], + unique: true, + match: [EMAIL_PATTERN, "Email is invalid"], + trim: true, + lowercase: true, }, - password: String + password: { + type: String, + required: true, + minLength: [8, "Password must be 8 characters or longer"], + } }); -const User = model("User", userSchema); +UserSchema.pre("save", function (next) { + const user = this; + + if (user.isModified("password")) { + bcrypt.hash(user.password, 10).then((hash) => { + user.password = hash; + next(); + }); + } else { + next(); + } +}); + +UserSchema.methods.checkPassword = function (password) { + return bcrypt.compare(password, this.password); +}; + +const User = mongoose.model("User", UserSchema); module.exports = User; diff --git a/package.json b/package.json index 19489d9695..4ba0707b23 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "dev": "nodemon server.js" }, "dependencies": { + "bcrypt": "^5.1.1", "cookie-parser": "^1.4.5", "dotenv": "^8.2.0", "express": "^4.17.1", diff --git a/routes/index.js b/routes/index.js deleted file mode 100644 index 81c2396ceb..0000000000 --- a/routes/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const router = require("express").Router(); - -/* GET home page */ -router.get("/", (req, res, next) => { - res.render("index"); -}); - -module.exports = router; diff --git a/routes/routes.js b/routes/routes.js new file mode 100644 index 0000000000..af20b146ad --- /dev/null +++ b/routes/routes.js @@ -0,0 +1,20 @@ +const router = require("express").Router(); + +const miscController = require("../controllers/misc.controller") +const authController = require("../controllers/auth.controller") + +/* GET home page */ +router.get("/", miscController.home) + +router.get("/register", authController.register) +router.post("/register", authController.doRegister) +router.get("/login",authController.login) +router.post("/login",authController.doLogin) + + + + + + + +module.exports = router; diff --git a/views/auth/login.hbs b/views/auth/login.hbs new file mode 100644 index 0000000000..4d553e5a7a --- /dev/null +++ b/views/auth/login.hbs @@ -0,0 +1,26 @@ +
+

Iniciar Sesión

+
+
+ + +
+
+ + +
+ +
+
\ No newline at end of file diff --git a/views/auth/register.hbs b/views/auth/register.hbs new file mode 100644 index 0000000000..bbca158017 --- /dev/null +++ b/views/auth/register.hbs @@ -0,0 +1,36 @@ +
+

Registro

+
+
+ + + {{#if errors.email}} +
+ {{errors.email}} +
+ {{/if}} +
+
+ + + {{#if errors.password}} +
+ {{errors.password}} +
+ {{/if}} +
+ + + diff --git a/views/layout.hbs b/views/layout.hbs index 73199c166b..652a28f4eb 100644 --- a/views/layout.hbs +++ b/views/layout.hbs @@ -6,6 +6,12 @@ {{title}} + + + From ccab8aac4ff81da6e1961645ca5bd8ac294f556f Mon Sep 17 00:00:00 2001 From: Juan Manuel Date: Sat, 23 Nov 2024 14:34:22 +0100 Subject: [PATCH 2/4] done --- app.js | 6 ++- config/index.js | 5 +++ config/session.config.js | 42 ++++++++++++++++++ controllers/auth.controller.js | 79 ++++++++++++++++++++-------------- controllers/user.controller.js | 13 ++++++ error-handling/index.js | 17 -------- middlewares/auth.middleware.js | 15 +++++++ package.json | 2 + public/stylesheets/style.css | 2 +- routes/routes.js | 13 +++--- views/auth/login.hbs | 14 +++--- views/auth/register.hbs | 5 +-- views/error.hbs | 2 - views/layout.hbs | 1 + views/partials/nav.hbs | 39 +++++++++++++++++ views/users/profile.hbs | 1 + 16 files changed, 190 insertions(+), 66 deletions(-) create mode 100644 config/session.config.js delete mode 100644 error-handling/index.js create mode 100644 middlewares/auth.middleware.js delete mode 100644 views/error.hbs create mode 100644 views/partials/nav.hbs create mode 100644 views/users/profile.hbs diff --git a/app.js b/app.js index 11022b18a5..a50193471f 100644 --- a/app.js +++ b/app.js @@ -8,6 +8,7 @@ require('./db'); // Handles http requests (express is node js framework) // https://www.npmjs.com/package/express const express = require('express'); +const { sessionConfig, loggedUser } = require("./config/session.config"); // Handles the handlebars // https://www.npmjs.com/package/hbs @@ -17,6 +18,8 @@ const app = express(); // ℹ️ This function is getting exported from the config folder. It runs most middlewares require('./config')(app); +app.use(sessionConfig); +app.use(loggedUser); // default value for title local const projectName = 'lab-express-basic-auth'; @@ -28,8 +31,9 @@ app.locals.title = `${capitalized(projectName)}- Generated with Ironlauncher`; const index = require('./routes/routes'); app.use('/', index); + // ❗ To handle errors. Routes that don't exist or errors that you handle in specific routes -require('./error-handling')(app); + module.exports = app; diff --git a/config/index.js b/config/index.js index 4d9ff5c193..82af17ee9f 100644 --- a/config/index.js +++ b/config/index.js @@ -1,5 +1,6 @@ // We reuse this import in order to have access to the `body` property in requests const express = require("express"); +const hbs = require("hbs"); // ℹ️ Responsible for the messages you see in the terminal as requests are coming in // https://www.npmjs.com/package/morgan @@ -27,6 +28,10 @@ module.exports = (app) => { app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); + hbs.registerPartials(__dirname + "/../views/partials"); + + + // Normalizes the path to the views folder app.set("views", path.join(__dirname, "..", "views")); // Sets the view engine to handlebars diff --git a/config/session.config.js b/config/session.config.js new file mode 100644 index 0000000000..18cf04fa04 --- /dev/null +++ b/config/session.config.js @@ -0,0 +1,42 @@ +const User = require("../models/User.model"); +const expressSession = require("express-session"); +const MongoStore = require("connect-mongo"); +const mongoose = require("mongoose"); + +const MAX_AGE = 7; + +module.exports.sessionConfig = expressSession({ + name: "express-cookie", + secret: "super-secret", // esto lo guardaamos en el dot.env COOKIE_SECRET + resave: false, + saveUninitialized: false, + cookie: { + secure: false, // mandamos la cookie en protocolos HTTP/HTTPS si es true solo HTTPS + httpOnly: true, // no es accesible por el Javascript del client-browser + maxAge: 24 * 3600 * 1000 * MAX_AGE, // una semana de vida + }, + store: new MongoStore({ + mongoUrl: mongoose.connection._connectionString, //monngoose.connection.db + ttl: 24 * 3600 * MAX_AGE, + }), + }); + + module.exports.loggedUser = (req, res, next) => { + const userId = req.session.userId; + + if (userId) { + User.findById(userId) + .then((userFromDB) => { + if (userFromDB) { + req.currentUser = userFromDB; // todos los middlewares ya tienen acceso a currentUser + res.locals.currentUser = userFromDB; // res.locals es el objeto donde se manda informacion a todas las vistas (hbs) + next(); + } else { + next(); + } + }) + .catch((err) => next(err)); + } else { + next(); + } + }; diff --git a/controllers/auth.controller.js b/controllers/auth.controller.js index 2d81a1f6e1..aae7c0c83d 100644 --- a/controllers/auth.controller.js +++ b/controllers/auth.controller.js @@ -7,47 +7,62 @@ module.exports.register = (req, res, next) => { } module.exports.doRegister = (req, res, next) => { - User.create(req.body) - .then((user) => { - user.checkPassword(req.body.password); - res.redirect("/login"); - }) - .catch((err) => { - if (err instanceof mongoose.Error.ValidationError) { + User.create(req.body) + .then((user) => { + res.redirect("/login"); + }) + .catch((err) => { + if (err instanceof mongoose.Error.ValidationError) { + res.render("auth/register", { + user: { + email: req.body.email, + }, + errors: err.errors, + }); + } + else if (err.code === 11000) { + res.render("auth/register", { - user: { - email: req.body.email, + user: req.body, + errors: { + email: "El correo electrónico ya está registrado.", }, - errors: err.errors, }); - } else { - next(err); - } - }); - }; + } else { + next(err); + } + }); +}; module.exports.login = (req, res, next) => { res.render("auth/login"); }; module.exports.doLogin = (req, res, next) => { const { email, password } = req.body; - User.findOne({ email }) - .then((user) => { - if (!user) { - res.redirect("/login"); - } else { - user.checkPassword(password).then((match) => { - if (match) { - res.redirect("/profile"); - } else { - res.redirect("/login"); - } - }); - } - }) - .catch((err) => { - console.error(err); - }); + .then((user) => { + if (user) { + return user.checkPassword(password).then((match) => { + if (match) { + req.session.userId = user.id; // genero cookie y session + res.redirect("/profile"); + } else { + console.log("Email o contraseña incorrectos"); // contraseña incorrecta + renderWithErrors(); + } + }); + } else { + console.log("Email o contraseña incorrectos"); // no existe usuario con ese email + renderWithErrors(); + } + }) + .catch((err) => next(err)); + }; + + module.exports.logout = (req, res, next) => { + req.session.destroy(); + res.clearCookie("express-cookie"); + res.redirect("/login"); }; + \ No newline at end of file diff --git a/controllers/user.controller.js b/controllers/user.controller.js index e69de29bb2..12f27d7514 100644 --- a/controllers/user.controller.js +++ b/controllers/user.controller.js @@ -0,0 +1,13 @@ +const User = require("../models/User.model"); + +module.exports.profile = (req, res, next) =>{ + res.render("users/profile"); +} + +module.exports.delete = (req, res, next)=>{ + User.findByIdAndDelete(req.params.id) + .then(()=>{ + res.redirect("/panel") + }) + .catch((err) => next(err)); +}; \ No newline at end of file diff --git a/error-handling/index.js b/error-handling/index.js deleted file mode 100644 index 5d6e74bc1c..0000000000 --- a/error-handling/index.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = (app) => { - app.use((req, res, next) => { - // this middleware runs whenever requested page is not available - res.status(404).render("not-found"); - }); - - app.use((err, req, res, next) => { - // whenever you call next(err), this middleware will handle the error - // always logs the error - console.error("ERROR", req.method, req.path, err); - - // only render if the error ocurred before sending the response - if (!res.headersSent) { - res.status(500).render("error"); - } - }); -}; diff --git a/middlewares/auth.middleware.js b/middlewares/auth.middleware.js new file mode 100644 index 0000000000..23c20f595f --- /dev/null +++ b/middlewares/auth.middleware.js @@ -0,0 +1,15 @@ +module.exports.isAutenticated = (req, res, next) => { + if (req.currentUser) { + next(); + }else{ + res.redirect("/login"); + } +}; + +module.exports.isNoAutenticated = (req, res, next) => { + if (!req.currentUser) { + next(); + }else{ + res.redirect("/profile"); + } +}; \ No newline at end of file diff --git a/package.json b/package.json index 4ba0707b23..8de3a24434 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,11 @@ }, "dependencies": { "bcrypt": "^5.1.1", + "connect-mongo": "^5.1.0", "cookie-parser": "^1.4.5", "dotenv": "^8.2.0", "express": "^4.17.1", + "express-session": "^1.18.1", "hbs": "^4.1.1", "mongoose": "^6.1.2", "morgan": "^1.10.0", diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 9453385b99..89553919b1 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1,5 +1,5 @@ body { - padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; } diff --git a/routes/routes.js b/routes/routes.js index af20b146ad..8a574d6c16 100644 --- a/routes/routes.js +++ b/routes/routes.js @@ -2,14 +2,17 @@ const router = require("express").Router(); const miscController = require("../controllers/misc.controller") const authController = require("../controllers/auth.controller") - +const authMiddleweares = require("../middlewares/auth.middleware") +const userController = require ("../controllers/user.controller") /* GET home page */ router.get("/", miscController.home) -router.get("/register", authController.register) -router.post("/register", authController.doRegister) -router.get("/login",authController.login) -router.post("/login",authController.doLogin) +router.get("/register", authMiddleweares.isNoAutenticated, authController.register) +router.post("/register", authMiddleweares.isNoAutenticated, authController.doRegister) +router.get("/login", authMiddleweares.isNoAutenticated, authMiddleweares.isNoAutenticated, authController.login) +router.post("/login", authMiddleweares.isNoAutenticated, authController.doLogin) +router.get("/logout",authController.logout) +router.get("/profile", authMiddleweares.isAutenticated, userController.profile) diff --git a/views/auth/login.hbs b/views/auth/login.hbs index 4d553e5a7a..87a36da713 100644 --- a/views/auth/login.hbs +++ b/views/auth/login.hbs @@ -2,12 +2,13 @@

Iniciar Sesión

- +
@@ -21,6 +22,9 @@ required /> +
+ {{error}} +
- \ No newline at end of file + diff --git a/views/auth/register.hbs b/views/auth/register.hbs index bbca158017..a1d419e77f 100644 --- a/views/auth/register.hbs +++ b/views/auth/register.hbs @@ -23,14 +23,13 @@ class="form-control {{#if errors.password}}is-invalid{{/if}}" id="password" name="password" - - /> + /> {{#if errors.password}}
{{errors.password}}
{{/if}} + - diff --git a/views/error.hbs b/views/error.hbs deleted file mode 100644 index cc569e48ad..0000000000 --- a/views/error.hbs +++ /dev/null @@ -1,2 +0,0 @@ -

Error!

-

There was an error on the server! Check the console!

diff --git a/views/layout.hbs b/views/layout.hbs index 652a28f4eb..388fe11cdc 100644 --- a/views/layout.hbs +++ b/views/layout.hbs @@ -16,6 +16,7 @@ + {{> nav}} {{{body}}} diff --git a/views/partials/nav.hbs b/views/partials/nav.hbs new file mode 100644 index 0000000000..db060d3f67 --- /dev/null +++ b/views/partials/nav.hbs @@ -0,0 +1,39 @@ + diff --git a/views/users/profile.hbs b/views/users/profile.hbs new file mode 100644 index 0000000000..7cfae036ad --- /dev/null +++ b/views/users/profile.hbs @@ -0,0 +1 @@ +

Perfil

\ No newline at end of file From 88142a98dc10ab6c67b26b8c1101209278ac9cc2 Mon Sep 17 00:00:00 2001 From: Juan Manuel Date: Sun, 24 Nov 2024 19:49:56 +0100 Subject: [PATCH 3/4] done 2 --- app.js | 3 +++ config/index.js | 1 + controllers/auth.controller.js | 23 +++++++++++++++++++---- routes/routes.js | 2 +- views/auth/login.hbs | 2 +- views/layout.hbs | 2 -- views/main.hbs | 0 views/users/private.hbs | 0 views/users/profile.hbs | 3 ++- 9 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 views/main.hbs create mode 100644 views/users/private.hbs diff --git a/app.js b/app.js index a50193471f..18ce25be3a 100644 --- a/app.js +++ b/app.js @@ -14,6 +14,7 @@ const { sessionConfig, loggedUser } = require("./config/session.config"); // https://www.npmjs.com/package/hbs const hbs = require('hbs'); + const app = express(); // ℹ️ This function is getting exported from the config folder. It runs most middlewares @@ -21,6 +22,8 @@ require('./config')(app); app.use(sessionConfig); app.use(loggedUser); + + // default value for title local const projectName = 'lab-express-basic-auth'; const capitalized = string => string[0].toUpperCase() + string.slice(1).toLowerCase(); diff --git a/config/index.js b/config/index.js index 82af17ee9f..a26cf973a5 100644 --- a/config/index.js +++ b/config/index.js @@ -29,6 +29,7 @@ module.exports = (app) => { app.use(cookieParser()); hbs.registerPartials(__dirname + "/../views/partials"); + diff --git a/controllers/auth.controller.js b/controllers/auth.controller.js index aae7c0c83d..0a87124a36 100644 --- a/controllers/auth.controller.js +++ b/controllers/auth.controller.js @@ -33,6 +33,7 @@ module.exports.doRegister = (req, res, next) => { } }); }; + module.exports.login = (req, res, next) => { res.render("auth/login"); @@ -47,13 +48,22 @@ module.exports.login = (req, res, next) => { req.session.userId = user.id; // genero cookie y session res.redirect("/profile"); } else { - console.log("Email o contraseña incorrectos"); // contraseña incorrecta - renderWithErrors(); + res.render("auth/login", { + errors: { + error: "Email o contraseña incorrectos", + email: req.body.email, // Mensaje de error para el usuario + }, + }); + } }); } else { - console.log("Email o contraseña incorrectos"); // no existe usuario con ese email - renderWithErrors(); + res.render("auth/login", { + errors: { + error: "Email o contraseña incorrectos", + email: req.body.email, // Mensaje de error para el usuario + }, + }); } }) .catch((err) => next(err)); @@ -65,4 +75,9 @@ module.exports.login = (req, res, next) => { res.redirect("/login"); }; + + module.exports.main = (req, res, next) => { + res.render("auth/register") + } + \ No newline at end of file diff --git a/routes/routes.js b/routes/routes.js index 8a574d6c16..f27ebcba26 100644 --- a/routes/routes.js +++ b/routes/routes.js @@ -13,7 +13,7 @@ router.get("/login", authMiddleweares.isNoAutenticated, authMiddleweares.isNoAut router.post("/login", authMiddleweares.isNoAutenticated, authController.doLogin) router.get("/logout",authController.logout) router.get("/profile", authMiddleweares.isAutenticated, userController.profile) - +router.get("/main", authMiddleweares.isNoAutenticated,) diff --git a/views/auth/login.hbs b/views/auth/login.hbs index 87a36da713..8941282471 100644 --- a/views/auth/login.hbs +++ b/views/auth/login.hbs @@ -23,7 +23,7 @@ />
- {{error}} + {{errors.error}}
diff --git a/views/layout.hbs b/views/layout.hbs index 388fe11cdc..b30a84efaa 100644 --- a/views/layout.hbs +++ b/views/layout.hbs @@ -12,8 +12,6 @@ /> - - {{> nav}} diff --git a/views/main.hbs b/views/main.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/views/users/private.hbs b/views/users/private.hbs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/views/users/profile.hbs b/views/users/profile.hbs index 7cfae036ad..03036a2860 100644 --- a/views/users/profile.hbs +++ b/views/users/profile.hbs @@ -1 +1,2 @@ -

Perfil

\ No newline at end of file +

Perfil

+cat \ No newline at end of file From ec09072b4ff4e6abe1b0bf8c6b1f0f258fdd2396 Mon Sep 17 00:00:00 2001 From: Juan Manuel Date: Sun, 24 Nov 2024 20:11:28 +0100 Subject: [PATCH 4/4] done --- controllers/auth.controller.js | 2 +- controllers/user.controller.js | 6 +++++- middlewares/auth.middleware.js | 4 +++- public/images/homer.gif | Bin 0 -> 83178 bytes routes/routes.js | 5 +++-- views/auth/login.hbs | 2 +- views/main.hbs | 0 views/partials/nav.hbs | 7 +++++-- views/users/{profile.hbs => main.hbs} | 0 views/users/private.hbs | 2 ++ 10 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 public/images/homer.gif delete mode 100644 views/main.hbs rename views/users/{profile.hbs => main.hbs} (100%) diff --git a/controllers/auth.controller.js b/controllers/auth.controller.js index 0a87124a36..14b348480f 100644 --- a/controllers/auth.controller.js +++ b/controllers/auth.controller.js @@ -46,7 +46,7 @@ module.exports.login = (req, res, next) => { return user.checkPassword(password).then((match) => { if (match) { req.session.userId = user.id; // genero cookie y session - res.redirect("/profile"); + res.redirect("/main"); } else { res.render("auth/login", { errors: { diff --git a/controllers/user.controller.js b/controllers/user.controller.js index 12f27d7514..7afb1864dd 100644 --- a/controllers/user.controller.js +++ b/controllers/user.controller.js @@ -1,7 +1,11 @@ const User = require("../models/User.model"); module.exports.profile = (req, res, next) =>{ - res.render("users/profile"); + res.render("users/main"); +} + +module.exports.private = (req, res, next) =>{ + res.render("users/private"); } module.exports.delete = (req, res, next)=>{ diff --git a/middlewares/auth.middleware.js b/middlewares/auth.middleware.js index 23c20f595f..c268f65489 100644 --- a/middlewares/auth.middleware.js +++ b/middlewares/auth.middleware.js @@ -4,12 +4,14 @@ module.exports.isAutenticated = (req, res, next) => { }else{ res.redirect("/login"); } + + }; module.exports.isNoAutenticated = (req, res, next) => { if (!req.currentUser) { next(); }else{ - res.redirect("/profile"); + res.redirect("/main"); } }; \ No newline at end of file diff --git a/public/images/homer.gif b/public/images/homer.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d04e506f4f8c1808d3ce3c8dfd2d61f3ce9a6a5 GIT binary patch literal 83178 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 z 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 literal 0 HcmV?d00001 diff --git a/routes/routes.js b/routes/routes.js index f27ebcba26..a1b30dda99 100644 --- a/routes/routes.js +++ b/routes/routes.js @@ -12,8 +12,9 @@ router.post("/register", authMiddleweares.isNoAutenticated, authController.doReg router.get("/login", authMiddleweares.isNoAutenticated, authMiddleweares.isNoAutenticated, authController.login) router.post("/login", authMiddleweares.isNoAutenticated, authController.doLogin) router.get("/logout",authController.logout) -router.get("/profile", authMiddleweares.isAutenticated, userController.profile) -router.get("/main", authMiddleweares.isNoAutenticated,) +router.get("/main", authMiddleweares.isAutenticated, userController.profile) +router.get("/private", authMiddleweares.isAutenticated, userController.private) + diff --git a/views/auth/login.hbs b/views/auth/login.hbs index 8941282471..716d69505b 100644 --- a/views/auth/login.hbs +++ b/views/auth/login.hbs @@ -8,7 +8,7 @@ class="form-control" id="email" name="email" - value="{{email}}" + value="{{errors.email}}" required /> diff --git a/views/main.hbs b/views/main.hbs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/views/partials/nav.hbs b/views/partials/nav.hbs index db060d3f67..5c9b2d0abc 100644 --- a/views/partials/nav.hbs +++ b/views/partials/nav.hbs @@ -1,5 +1,5 @@