Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comments completed #453

Open
wants to merge 80 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
f5b29ec
added name, surname, DOB to sign up. tests passed and feature impleme…
annaobarzanowska Nov 15, 2022
2822257
Merge pull request #1 from BnjCam25/add-name-surname
mollygallagherwickham Nov 15, 2022
495e7d4
added to the integration tests to sign up
lcleigh Nov 15, 2022
e819fd7
Merge pull request #2 from BnjCam25/int-test-signup
mollygallagherwickham Nov 15, 2022
3a600c2
Added link to trello board
annaobarzanowska Nov 15, 2022
f7a8c9d
completed welcome message feature + test passing + redirect to posts …
lcleigh Nov 16, 2022
4b3e044
Merge branch 'welcome-user2' of https://github.com/BnjCam25/acebook-s…
annaobarzanowska Nov 16, 2022
b05ca53
personalised message on login
annaobarzanowska Nov 16, 2022
f902741
Merge pull request #3 from BnjCam25/second-ticket
BnjCam25 Nov 16, 2022
35764c8
Add timestamps, order posts by creation and specs
natashawilson96 Nov 16, 2022
a0f0ab8
added sign up and sign in links to homepage
annaobarzanowska Nov 16, 2022
3d85b44
Merge branch 'main' into Tash
annaobarzanowska Nov 17, 2022
122c158
Merge pull request #5 from BnjCam25/Tash
annaobarzanowska Nov 17, 2022
a387bd2
Merge pull request #4 from BnjCam25/sign-up-sign-in
BnjCam25 Nov 17, 2022
fd46c41
Done
BnjCam25 Nov 17, 2022
80461bc
Done
BnjCam25 Nov 17, 2022
120ea3f
update
BnjCam25 Nov 17, 2022
316c1ca
Merge pull request #7 from BnjCam25/same-email
BnjCam25 Nov 17, 2022
a1dca44
Fix tests which were broken
BnjCam25 Nov 17, 2022
a8ba401
Update index.js
BnjCam25 Nov 17, 2022
d20402c
Update index.js
BnjCam25 Nov 17, 2022
c0c1a67
Merge pull request #8 from BnjCam25/fix_tests
BnjCam25 Nov 17, 2022
e8b84e9
new users must enter all details in order to sign up
annaobarzanowska Nov 17, 2022
11d0128
Create CNAME
BnjCam25 Nov 17, 2022
a894361
Delete CNAME
BnjCam25 Nov 17, 2022
81d7583
adjusted signing up to force user to input all values and adjusted me…
annaobarzanowska Nov 17, 2022
11f29ad
name and date added to posts
mollagher Nov 17, 2022
fc26cb3
Update user_can_submit_posts_spec.js
mollygallagherwickham Nov 17, 2022
c593cef
Update user_can_submit_posts_spec.js
mollygallagherwickham Nov 17, 2022
e6613aa
Update home_page_spec.js
mollygallagherwickham Nov 17, 2022
4ef188a
Update user_can_see_welcome_message_when_logged_in.js
mollygallagherwickham Nov 17, 2022
cc8f61d
Update user_can_sign_in_spec.js
mollygallagherwickham Nov 17, 2022
3fcb58c
Update user_can_see_posts_count_on_post.js
mollygallagherwickham Nov 17, 2022
aa48375
Update user_can_sign_up_spec.js
mollygallagherwickham Nov 17, 2022
b1a506c
Merge branch 'main' into username-add
annaobarzanowska Nov 17, 2022
e9cc814
Merge pull request #9 from BnjCam25/username-add
annaobarzanowska Nov 17, 2022
a4cad3b
Merge branch 'main' into signing-up
annaobarzanowska Nov 17, 2022
1353f13
Merge pull request #10 from BnjCam25/signing-up
annaobarzanowska Nov 17, 2022
c883e8b
date formatted
mollagher Nov 18, 2022
541df30
profile page added, link added and formatted some int tests to get th…
lcleigh Nov 18, 2022
962e21c
Update post.js
mollygallagherwickham Nov 18, 2022
e83da3d
Merge pull request #11 from BnjCam25/date_format
annaobarzanowska Nov 18, 2022
e02c616
changed last test to get all to pass
lcleigh Nov 18, 2022
5b4f8c9
Merge branch 'main' into profile-page
BnjCam25 Nov 18, 2022
ce5ce12
Merge pull request #12 from BnjCam25/profile-page
BnjCam25 Nov 18, 2022
1ee5360
add navBar HTML
natashawilson96 Nov 21, 2022
db96dd0
added functionality
BnjCam25 Nov 21, 2022
735ccf1
like button added
PhilipStapel Nov 21, 2022
21fdae8
Merge pull request #13 from BnjCam25/likebutton
BnjCam25 Nov 21, 2022
2583ac4
add css code and HTML for nav bar
natashawilson96 Nov 21, 2022
828596d
Update index.hbs
annaobarzanowska Nov 21, 2022
5a25737
Update layout.hbs
annaobarzanowska Nov 21, 2022
1e65377
Merge pull request #15 from BnjCam25/navBar
annaobarzanowska Nov 21, 2022
3d2ea22
adding formatting to posts
lcleigh Nov 21, 2022
669f129
cant like twice
PhilipStapel Nov 22, 2022
77aa24a
Merge pull request #16 from BnjCam25/likebutton
natashawilson96 Nov 22, 2022
e713b84
Merge pull request #17 from BnjCam25/format-posts
natashawilson96 Nov 22, 2022
4422158
somwhat working
BnjCam25 Nov 22, 2022
3b1d550
edits to commenting function
annaobarzanowska Nov 22, 2022
95bed5b
made progress on comments
annaobarzanowska Nov 22, 2022
5098cf1
dislike_button
PhilipStapel Nov 23, 2022
fdb1ff8
profile posts
mollagher Nov 23, 2022
0a2b2a7
Update app.js
BnjCam25 Nov 23, 2022
574d8f8
Update profile.hbs
BnjCam25 Nov 23, 2022
572f1c6
Merge pull request #18 from BnjCam25/profile_posts
BnjCam25 Nov 23, 2022
54f1b7c
added basic comment functionality
annaobarzanowska Nov 23, 2022
263ae49
dislike button2
PhilipStapel Nov 23, 2022
0aa9343
Password encrypts and logs in
BnjCam25 Nov 23, 2022
a9847b5
no progress. send help
annaobarzanowska Nov 23, 2022
e11b4b2
Fixed Dislike bug and refactored
PhilipStapel Nov 23, 2022
8408727
comments still in progress...
annaobarzanowska Nov 23, 2022
14239fc
added bigger box for adding longer posts ticket
annaobarzanowska Nov 23, 2022
92a4098
Merge pull request #21 from BnjCam25/dislike
annaobarzanowska Nov 23, 2022
5c1670e
comments are done
annaobarzanowska Nov 23, 2022
ed25f28
Merge branch 'main' into comments_completed
annaobarzanowska Nov 23, 2022
679193a
Update sessions.js
annaobarzanowska Nov 23, 2022
7a85abf
Merge pull request #20 from BnjCam25/encrypt
annaobarzanowska Nov 23, 2022
d3ac305
Update app.js
lcleigh Nov 23, 2022
61e85e2
Delete test.js
lcleigh Nov 23, 2022
872dba8
Merge branch 'main' into comments_completed
lcleigh Nov 23, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 15 additions & 0 deletions .eslintrc.js
@@ -0,0 +1,15 @@
module.exports = {
env: {
browser: true,
es2021: true
},
extends: 'standard',
overrides: [
],
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module'
},
rules: {
}
}
27 changes: 0 additions & 27 deletions .eslintrc.json

This file was deleted.

6 changes: 6 additions & 0 deletions .vscode/settings.json
@@ -0,0 +1,6 @@
{
"explorer.compactFolders": false,
"notebook.compactView": false,
"explorer.expandSingleFolderWorkspaces": true,
"npm.enableRunFromFolder": false
}
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -14,7 +14,7 @@ It uses:

## Card wall

REPLACE THIS TEXT WITH A LINK TO YOUR CARD WALL
[Team Sleep Trello](https://trello.com/b/YvAr6yCq/acebook-sleep)

## Quickstart

Expand Down
92 changes: 49 additions & 43 deletions app.js
@@ -1,78 +1,84 @@
const createError = require("http-errors");
const express = require("express");
const path = require("path");
const cookieParser = require("cookie-parser");
const logger = require("morgan");
const session = require("express-session");
const methodOverride = require("method-override");
const createError = require('http-errors')
const express = require('express')
const path = require('path')
const cookieParser = require('cookie-parser')
const logger = require('morgan')
const session = require('express-session')
const methodOverride = require('method-override')

const homeRouter = require('./routes/home')
const postsRouter = require('./routes/posts')
const sessionsRouter = require('./routes/sessions')
const usersRouter = require('./routes/users')

const app = express()

// handlebars
var hbs = require('hbs');
hbs.registerHelper('dateFormat', require('handlebars-dateformat'));

const homeRouter = require("./routes/home");
const postsRouter = require("./routes/posts");
const sessionsRouter = require("./routes/sessions");
const usersRouter = require("./routes/users");

const app = express();

// view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "hbs");
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'hbs')

app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));
app.use(methodOverride("_method"));
app.use(logger('dev'))
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(cookieParser())
app.use(express.static(path.join(__dirname, 'public')))
app.use(methodOverride('_method'))

app.use(
session({
key: "user_sid",
secret: "super_secret",
key: 'user_sid',
secret: 'super_secret',
resave: false,
saveUninitialized: false,
cookie: {
expires: 600000,
},
expires: 600000
}
})
);
)

// clear the cookies after user logs out
app.use((req, res, next) => {
if (req.cookies.user_sid && !req.session.user) {
res.clearCookie("user_sid");
res.clearCookie('user_sid')
}
next();
});
next()
})

// middleware function to check for logged-in users
const sessionChecker = (req, res, next) => {
if (!req.session.user && !req.cookies.user_sid) {
res.redirect("/sessions/new");
res.redirect('/sessions/new')
} else {
next();
next()
}
};
}

// route setup
app.use("/", homeRouter);
app.use("/posts", sessionChecker, postsRouter);
app.use("/sessions", sessionsRouter);
app.use("/users", usersRouter);
app.use('/', homeRouter)
app.use('/posts', sessionChecker, postsRouter)
app.use('/sessions', sessionsRouter)
app.use('/users', usersRouter)

// catch 404 and forward to error handler
app.use((req, res, next) => {
next(createError(404));
});
next(createError(404))
})

// error handler
app.use((err, req, res) => {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get("env") === "development" ? err : {};
res.locals.message = err.message
res.locals.error = req.app.get('env') === 'development' ? err : {}

// render the error page
res.status(err.status || 500);
res.render("error");
});
res.status(err.status || 500)
res.render('error')
})

module.exports = app;
module.exports = app
15 changes: 11 additions & 4 deletions controllers/home.js
@@ -1,7 +1,14 @@
// const Post = require('../models/post')

const HomeController = {
Index: (req, res) => {
res.render("home/index", { title: "Acebook" });
},
};
// if user has an open session, show "You're logged in", else show "You need to log in"
if (req.session.user) {
res.render('home/index', { title: 'Acebook', newUser: false, current_user: req.session.user.first_name })
} else {
res.render('home/index', { title: 'Acebook', newUser: true })
}
}
}

module.exports = HomeController;
module.exports = HomeController
104 changes: 91 additions & 13 deletions controllers/posts.js
@@ -1,28 +1,106 @@
const Post = require("../models/post");
const Post = require('../models/post')
const { replaceOne } = require('../models/user')
const User = require('../models/user')

const PostsController = {
Index: (req, res) => {
Post.find((err, posts) => {
Post.find().populate('user_id').exec((err, posts) => {
if (err) {
throw err;
throw err
}

res.render("posts/index", { posts: posts });
});
posts.reverse();
res.render('posts/index', { posts, current_user: req.session.user.first_name, current_session: req.session.user._id })
})
},

New: (req, res) => {
res.render("posts/new", {});
res.render('posts/new', { current_user: req.session.user.first_name })
},

Create: (req, res) => {
const post = new Post(req.body);
post.save((err) => {
// this creates new post with requested body
const post = new Post({
message: req.body.message,
user_id: req.session.user
})
// if there's an error, returns error and redirects to /posts
if (post.message != '') {
post.save((err) => {
if (err) {
throw err
}
res.status(201).redirect('/posts')
})
// else saves and redirects to new
} else {
res.redirect('/posts/new')
}
},

Like: (req, res) => {
// check if current user is in the likers list
Post.findOne({ _id: req.body.id, likers: req.session.user._id }).exec((err, result) => {
if (err) {
throw err;
throw err
}
if (result) {
Post.findOneAndUpdate({ _id: req.body.id }, { $inc: { likes: -1 }, $pull: { likers: req.session.user._id } }).exec((err) => {
if (err) {
throw err
}
res.status(201).redirect('/posts')
})
} else {
// otherwise like is added to database and current user added to likers for that post
Post.findOneAndUpdate({ _id: req.body.id }, { $inc: { likes: 1 }, $push: { likers: req.session.user._id } }).exec((err) => {
if (err) {
throw err
}
res.status(200).redirect('/posts')
})
}
})
},

Comments: (req, res) => {
Post.findOneAndUpdate({ _id: req.body.id }, { $push: { comments: {comment: req.body.comments, commenter: req.session.user.first_name} } }, { returnNewDocument: true }).exec((err) => {
if (err) {
throw err
}
res.status(200).redirect('/posts')
})
},

res.status(201).redirect("/posts");
});

CheckLikes: (req, res) => {
Post.findOne({ _id: req.body.id, likers: req.session.user._id }).exec((err, result) => {
if (err) {
throw err
}
if (result) {
res.json({ liked: 'true', id: req.body.id })
} else {
res.json({ liked: 'false', id: req.body.id })
}
})
},
};

module.exports = PostsController;
Profile: (req,res) => {
Post.find({'user_id' : `${req.session.user._id}`
}).populate("user_id")
.exec((err, posts) => {
if (err) {
throw err
}
posts.reverse();
res.render('posts/profile', { posts,
current_user: req.session.user.first_name,
current_user_dob: req.session.user.DOB,
current_user_id: req.session.user._id,
current_user_email: (req.session.user.email).toString()
})
})
}
}
module.exports = PostsController
49 changes: 31 additions & 18 deletions controllers/sessions.js
@@ -1,34 +1,47 @@
const User = require("../models/user");
const User = require('../models/user')
var bcrypt = require('bcrypt')

const SessionsController = {
New: (req, res) => {
res.render("sessions/new", {});
if (req.session.user) {
res.redirect('/posts')
} else {
res.render('sessions/new', { newUser: true })
}
},

Create: (req, res) => {
console.log("trying to log in");
const email = req.body.email;
const password = req.body.password;
console.log('trying to log in')
const email = req.body.email
const password = req.body.password

User.findOne({ email: email }).then((user) => {
User.findOne({ email }).then((user) => {
if (!user) {
res.redirect("/sessions/new");
} else if (user.password != password) {
res.redirect("/sessions/new");
res.redirect('/sessions/new')
} else {
req.session.user = user;
res.redirect("/posts");
bcrypt.compare(password, user.password, function (err, result) {
if (err) {
throw err
}

if (result === true) {
req.session.user = user
res.redirect('/posts')
} else {
res.redirect('/sessions/new')
}
});
}
});
})
},

Destroy: (req, res) => {
console.log("logging out");
console.log('logging out')
if (req.session.user && req.cookies.user_sid) {
res.clearCookie("user_sid");
res.clearCookie('user_sid')
}
res.redirect("/sessions/new");
},
};
res.redirect('/sessions/new')
}
}

module.exports = SessionsController;
module.exports = SessionsController