Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 75 additions & 78 deletions controllers/auth.js
Original file line number Diff line number Diff line change
@@ -1,87 +1,84 @@
const { User } = require('../models/user')
const passport = require('passport')
const bcrypt = require('bcrypt')
const { User } = require("../models/user");
const passport = require("passport");
const bcrypt = require("bcrypt");

const handleSignup = (req, res) => {
const { name, email, username, password, password2 } = req.body;
let errors = [];
// console.log(' Name ' + name + ' email :' + email + 'username: ' + username + ' pass:' + password);
if (!name || !email || !username || !password || !password2) {
errors.push({ msg: "Please fill in all fields" })
}
//check if match
if (password !== password2) {
errors.push({ msg: "passwords dont match" });
}

//check if password is more than 6 characters
if (password.length < 6) {
errors.push({ msg: 'password atleast 6 characters' })
}
if (errors.length > 0) {
res.render('signup', {
errors: errors,
name: name,
email: email,
password: password,
password2: password2
})
} else {
//validation passed
User.findOne({ username: username }).exec((err, user) => {
// console.log(user);
if (user) {
errors.push({ msg: 'username already registered' });
res.render('auth/signup', {
errors: errors,
name: name,
email: email,
password: password,
password2: password2
})

} else {
const newUser = new User({ name, email, password, username });
//hash password
bcrypt.genSalt(10, (err, salt) =>
bcrypt.hash(newUser.password, salt,
(err, hash) => {
if (err) throw err;
//save pass to hash
newUser.password = hash;
//save user
newUser.save()
.then((value) => {
// console.log(value)
req.flash('success_msg', 'You have now registered!')
res.redirect('/auth/login');
})
.catch(value => console.log(value));

})
);
}
})
}
}
const { name, email, username, password, password2 } = req.body;
let errors = [];
// console.log(' Name ' + name + ' email :' + email + 'username: ' + username + ' pass:' + password);
if (!name || !email || !username || !password || !password2) {
errors.push({ msg: "Please fill in all fields" });
}
//check if match
if (password !== password2) {
errors.push({ msg: "passwords dont match" });
}

//check if password is more than 6 characters
if (password.length < 6) {
errors.push({ msg: "password atleast 6 characters" });
}
if (errors.length > 0) {
res.render("signup", {
errors: errors,
name: name,
email: email,
password: password,
password2: password2,
});
} else {
//validation passed
User.findOne({ username: username }).exec((err, user) => {
// console.log(user);
if (user) {
errors.push({ msg: "username already registered" });
res.render("auth/signup", {
errors: errors,
name: name,
email: email,
password: password,
password2: password2,
});
} else {
const newUser = new User({ name, email, password, username });
//hash password
bcrypt.genSalt(10, (err, salt) =>
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
//save pass to hash
newUser.password = hash;
//save user
newUser
.save()
.then((value) => {
// console.log(value)
req.flash("success_msg", "You have now registered!");
res.redirect("/auth/login");
})
.catch((value) => console.log(value));
})
);
}
});
}
};

const handleLogin = (req, res, next) => {
passport.authenticate('local', {
successRedirect: '/mdb',
failureRedirect: '/auth/login',
failureFlash: true,
})(req, res, next);
}

passport.authenticate("local", {
successRedirect: "/mdb",
failureRedirect: "/auth/login",
failureFlash: true,
})(req, res, next);
};

const handleLogout = (req, res) => {
req.logout();
req.flash('success_msg', 'Now logged out');
res.redirect('/auth/login');
}

req.logout();
req.flash("success_msg", "Now logged out");
res.redirect("/auth/login");
};

module.exports = {
handleLogout, handleLogin, handleSignup
}
handleLogout,
handleLogin,
handleSignup,
};
94 changes: 45 additions & 49 deletions controllers/movie.js
Original file line number Diff line number Diff line change
@@ -1,60 +1,56 @@
const { Movie } = require('../models/movie')
const { Rating } = require('../models/rating')
const { Blog } = require('../models/blog')
const { Movie, Rating } = require("../models/movie");
const { Blog } = require("../models/blog");

const handleMovieAdd = (req, res) => {
const newMovie = new Movie(req.body)
newMovie.save()
.then(res.redirect('/mdb/'))
.catch(err => console.log(err))
}

const newMovie = new Movie(req.body);
newMovie
.save()
.then(res.redirect("/mdb/"))
.catch((err) => console.log(err));
};

const getAllMovies = (req, res) => {
Movie.find({}).then(movies => {
res.render('mdb/movie/movies', { movies })
})
}

Movie.find({}).then((movies) => {
res.render("mdb/movie/movies", { movies });
});
};

const getMovie = (req, res) => {
Movie.findOne({ name: req.params.name }).then(movie => {
Blog.find({ movie }).then(blogs => {
res.render('mdb/movie/movie', { movie, user: req.user, blogs })
})
})
}

Movie.findOne({ name: req.params.name }).then((movie) => {
Blog.find({ movie }).then((blogs) => {
res.render("mdb/movie/movie", { movie, user: req.user, blogs });
});
});
};

/**
* Pre hook of mongoose taking care of deleting the Ratings for that movie.
*/
const deleteMovie = (req, res) => {
Movie.findOne({ name: req.params.name }).then(movie => {
Rating.deleteMany({ movie }).then(() => {
Blog.deleteMany({ movie }).then(() => {
movie.remove().then(() => {
res.redirect('/mdb/movies')
})
})
})
})
}
Movie.findOne({ name: req.params.name }).then((movie) => {
movie.remove().then(() => {
res.redirect("/mdb/movies");
});
});
};

const editMovie = (req, res) => {
Movie.findOne({ name: req.params.name }).then(movie => {
res.render('mdb/movie/editMovie', { movie })
})
}
Movie.findOne({ name: req.params.name }).then((movie) => {
res.render("mdb/movie/editMovie", { movie });
});
};

const editMovieSubmit = (req, res) => {
Movie.findOneAndUpdate({ name: req.params.name}, req.body).then(() => {
res.redirect('/mdb/movies')
})
}


module.exports = {
getAllMovies,
getMovie,
deleteMovie,
editMovie,
editMovieSubmit,
handleMovieAdd
}
Movie.findOneAndUpdate({ name: req.params.name }, req.body).then(() => {
res.redirect("/mdb/movies");
});
};

module.exports = {
getAllMovies,
getMovie,
deleteMovie,
editMovie,
editMovieSubmit,
handleMovieAdd,
};
Loading