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
Empty file added .log
Empty file.
10 changes: 5 additions & 5 deletions config/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ const mongoose = require("mongoose");

const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.DB_STRING, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true,
const conn = await mongoose.connect(process.env.MONGO_URI, {
// useNewUrlParser: true,
// useUnifiedTopology: true,
// useFindAndModify: false,
// useCreateIndex: true,
});

console.log(`MongoDB Connected: ${conn.connection.host}`);
Expand Down
16 changes: 8 additions & 8 deletions config/passport.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@ const User = require("../models/User");
module.exports = function (passport) {
passport.use(
new LocalStrategy({ usernameField: "email" }, (email, password, done) => {
User.findOne({ email: email.toLowerCase() }, (err, user) => {
if (err) {
return done(err);
}
User.findOne({ email: email.toLowerCase() })
.then((user) => {
if (!user) {
return done(null, false, { msg: `Email ${email} not found.` });
}
Expand All @@ -27,15 +25,17 @@ module.exports = function (passport) {
}
return done(null, false, { msg: "Invalid email or password." });
});
});
})
})
})
);

passport.serializeUser((user, done) => {
done(null, user.id);
});

passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => done(err, user));
passport.deserializeUser(function (user, cb) {
process.nextTick(function () {
return cb(null, user);
});
});
};
32 changes: 29 additions & 3 deletions controllers/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ exports.getSignup = (req, res) => {
});
};

exports.postSignup = (req, res, next) => {
exports.postSignup = async (req, res, next) => {
const validationErrors = [];
if (!validator.isEmail(req.body.email))
validationErrors.push({ msg: "Please enter a valid email address." });
Expand All @@ -90,7 +90,33 @@ exports.postSignup = (req, res, next) => {
password: req.body.password,
});

User.findOne(
const existingUser = await User.findOne(
{ $or: [{ email: req.body.email }, { userName: req.body.userName }] }
)
if (existingUser) {
req.flash("errors", {
msg: "Account with that email address or username already exists.",
});
return res.redirect("../signup");
}
user.save()
.then(usr => {
req.logIn(user, (err) => {
if (err) {
return next(err);
}
res.redirect("/profile");
});
});

};



/**
* This is the depriated version, findone is not available as a callback
*
* User.findOne(
{ $or: [{ email: req.body.email }, { userName: req.body.userName }] },
(err, existingUser) => {
if (err) {
Expand All @@ -115,4 +141,4 @@ exports.postSignup = (req, res, next) => {
});
}
);
};
*/
17 changes: 11 additions & 6 deletions controllers/posts.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
const cloudinary = require("../middleware/cloudinary");
const Post = require("../models/Post");
const User = require("../models/User");

module.exports = {
getProfile: async (req, res) => {
try {
const user = await User.findOne({ _id: req.user })

const posts = await Post.find({ user: req.user.id });
res.render("profile.ejs", { posts: posts, user: req.user });
res.render("profile.ejs", { posts: posts, user: user });
} catch (err) {
console.log(err);
}
Expand Down Expand Up @@ -37,9 +40,9 @@ module.exports = {
cloudinaryId: result.public_id,
caption: req.body.caption,
likes: 0,
user: req.user.id,
user: req.user
});
console.log("Post has been added!");
console.log('from controllers posts.js', req.user) //find the user id, then add to post schema
res.redirect("/profile");
} catch (err) {
console.log(err);
Expand All @@ -63,10 +66,12 @@ module.exports = {
try {
// Find post by id
let post = await Post.findById({ _id: req.params.id });
// Delete image from cloudinary
await cloudinary.uploader.destroy(post.cloudinaryId);

// Delete image from cloudinary, pass in new args
await cloudinary.uploader.destroy( post.cloudinaryId, {invalidate:true} );

// Delete post from db
await Post.remove({ _id: req.params.id });
await Post.findOneAndDelete({ _id: req.params.id });
console.log("Deleted Post");
res.redirect("/profile");
} catch (err) {
Expand Down
Loading