Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const bodyParser = require("body-parser");
- const mongoose = require("mongoose");
- const User = require("../models/user.js");
- const bcrypt = require("bcrypt");
- const session = require("express-session");
- const cookieParser = require("cookie-parser");
- //Connect to local mongo database
- mongoose.connect("mongodb://localhost/login");
- module.exports = function loginController(app) {
- //For HTML <form> submits, use bodyParser.urlencoded()
- //For FETCH API submits, use bodyParser.json()
- //Handle Post Requests for registration
- app.post("/register", bodyParser.json(), function(req, res, next) {
- console.log(req.body);
- //Check if passwords match
- if (req.body.password !== req.body.passwordConf) {
- console.log("Passwords dont match")
- return res.status(500).send({
- status: "Passwords dont match"
- });
- }
- //Check if any POST field is empty
- if (req.body.email && req.body.username && req.body.password && req.body.passwordConf) { //all fields filled
- //Store the data in an object
- let newUser = new User({
- email: req.body.email,
- username: req.body.username,
- password: req.body.password,
- passwordConf: req.body.passwordConf
- });
- //save data to database
- newUser.save(function(err, result) {
- if (err) { //If error, return error
- console.log(err);
- if (err.name === 'MongoError' && err.code === 11000) {
- // Duplicate username
- return res.status(500).send({
- status: "User already exists"
- });
- }
- // Some other error
- return res.status(500).send(err);
- } else { // Else send Success Message
- return res.status(200).json({
- status: "Success"
- });
- }
- })
- } else { //fields missing - ERROR
- let err = new Error("All fields required");
- err.status = 400;
- return next(err);
- }
- })
- //Handle Post requests for login
- app.post("/login", bodyParser.json(), function(req, res, next) {
- //Check if any POST field is empty
- if (req.body.email && req.body.password) { //all fields filled
- User.findOne({
- email: req.body.email
- }).then(function(user) {
- if (user !== null) { //User exists
- bcrypt.compare(req.body.password, user.password, function(err, result) {
- if (result === true) { //Password is correct
- console.log("True: " + result);
- return res.status(200).json({
- status: "Password and user validated"
- });
- next();
- } else { //Password or user is incorecz
- console.log("Error" + err);
- return res.status(500).json({
- status: "Password or user invalid"
- });
- }
- })
- } else { //User does not exist
- return res.status(500).json({
- status: "Password or user invalid"
- });
- }
- })
- }
- })
- }
- const express = require("express");
- const app = express();
- const session = require("express-session");
- const morgan = require("morgan");
- const cookieParser = require("cookie-parser");
- //Console log HTTP reqs and sends
- app.use(morgan("dev"));
- //Access cookie
- app.use(cookieParser());
- //use sessions for tracking logins
- app.use(session({
- secret: 'Bingo Banana',
- resave: true,
- saveUninitialized: false,
- cookie: {
- maxAge: 6000
- }
- }))
- //Require the controller
- const routes = require("./controllers/controller.js")
- routes(app);
- //Show static folder
- app.use(express.static("./public"));
- app.listen(3000);
- console.log("Now listening to port 3000");
Add Comment
Please, Sign In to add comment