Skip to content

Commit

Permalink
Started on codebase setup
Browse files Browse the repository at this point in the history
  • Loading branch information
Emily-RC committed Oct 17, 2023
1 parent 4cb8adf commit d554401
Show file tree
Hide file tree
Showing 20 changed files with 1,530 additions and 639 deletions.
8 changes: 5 additions & 3 deletions api/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const path = require("path");
const logger = require("morgan");
const JWT = require("jsonwebtoken");

const postsRouter = require("./routes/posts");
const booksRouter = require("./routes/book");
const authenticationRouter = require("./routes/authentication");
const usersRouter = require("./routes/users");

Expand All @@ -27,6 +27,8 @@ const tokenChecker = (req, res, next) => {
token = authHeader.slice(7)
}

console.log(token);
console.log(process.env.JWT_SECRET);
JWT.verify(token, process.env.JWT_SECRET, (err, payload) => {
if(err) {
console.log(err)
Expand All @@ -39,9 +41,9 @@ const tokenChecker = (req, res, next) => {
};

// route setup
app.use("/posts", tokenChecker, postsRouter);
app.use("/book", tokenChecker, booksRouter);
app.use("/tokens", authenticationRouter);
app.use("/users", usersRouter);
app.use("/users", tokenChecker, usersRouter);

// catch 404 and forward to error handler
app.use((req, res, next) => {
Expand Down
4 changes: 2 additions & 2 deletions api/bin/www
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if (!process.env.JWT_SECRET) {
*/

var app = require("../app");
var debug = require("debug")("acebook:server");
var debug = require("debug")("chaptrs:server");
var http = require("http");
var mongoose = require("mongoose");

Expand All @@ -26,7 +26,7 @@ app.set("port", port);
* Connect to MongoDB
**/

var mongoDbUrl = process.env.MONGODB_URL || "mongodb://0.0.0.0/acebook";
var mongoDbUrl = process.env.MONGODB_URL || "mongodb://0.0.0.0/chaptrs";
mongoose.connect(mongoDbUrl, {
useNewUrlParser: true,
useUnifiedTopology: true,
Expand Down
28 changes: 28 additions & 0 deletions api/controllers/books.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const Book = require("../models/book");
const TokenGenerator = require("../lib/token_generator");

const BookController = {
Index: (req, res) => {
Book.find((err, books) => {
if (err) {
throw err;
}
const token = TokenGenerator.jsonwebtoken(req.book_id)
console.log("Generated Token:", token);
res.status(200).json({ books: books, token: token });
});
},
Create: (req, res) => {
const book = new Book(req.body);
Book.save((err) => {
if (err) {
throw err;
}

const token = TokenGenerator.jsonwebtoken(req.book_id)
res.status(201).json({ message: 'OK', token: token });
});
},
};

module.exports = BookController;
27 changes: 0 additions & 27 deletions api/controllers/posts.js

This file was deleted.

17 changes: 13 additions & 4 deletions api/controllers/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,23 @@ const User = require("../models/user");
const UsersController = {
Create: (req, res) => {
const user = new User(req.body);
console.log(user);
user.save((err) => {
if (err) {
res.status(400).json({message: 'Bad request'})
} else {
res.status(201).json({ message: 'OK' });
}
});
},
};
}})},
Index: (req, res) => {
User.find((err, users) => {
if (err) {
throw err;
}
const token = TokenGenerator.jsonwebtoken(req.user_id)
console.log("Generated Token:", token);
res.status(200).json({ users: users, token: token });
});
}
};

module.exports = UsersController;
4 changes: 2 additions & 2 deletions api/lib/token_generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class TokenGenerator {
user_id: user_id,
iat: Math.floor(Date.now() / 1000),

// Set the JWT token to expire in 10 minutes
exp: Math.floor(Date.now() / 1000) + (10 * 60)
// Set the JWT token to expire in 20 minutes
exp: Math.floor(Date.now() / 1000) + (20 * 60)
}, secret);
}
}
Expand Down
22 changes: 22 additions & 0 deletions api/models/book.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const mongoose = require("mongoose");

const BookSchema = new mongoose.Schema({
genre: { type: String, required: true },
author: { type: String, required: true },
title: { type: String, required: true },
year_published: { type: String, required: true },
// TODO: check type for year_published and session_id
session: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Session",
},
],
cover_photo: { type: String, required: false },
personal_rating: { type: String, required: false },
external_rating: { type: String, required: false },
});

const Book = mongoose.model("Book", BookSchema);

module.exports = Book;
20 changes: 20 additions & 0 deletions api/models/bookclub.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const mongoose = require("mongoose");

const BookClubSchema = new mongoose.Schema({
books: [
{type: mongoose.Schema.Types.ObjectId,
ref: "Book"}
],
users: [
{type: mongoose.Schema.Types.ObjectId,
ref: "user"}
],
sessions: [
{type: mongoose.Schema.Types.ObjectId,
ref: "session"}
],
})

const BookClub = mongoose.model("BookClub", BookClubSchema);

module.exports = BookClub;
9 changes: 0 additions & 9 deletions api/models/post.js

This file was deleted.

16 changes: 16 additions & 0 deletions api/models/session.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const mongoose = require("mongoose");

const SessionSchema = new mongoose.Schema({
date: { type: String, required: true },
location: { type: String, required: true },
users: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "User",
},
],
});

const Session = mongoose.model("Session", SessionSchema);

module.exports = Session;
5 changes: 5 additions & 0 deletions api/models/user.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({

username: { type: String, required: true },
email: { type: String, required: true },
password: { type: String, required: true },
location: { type: String, required: true },
date_joined: { type: String, required: true },
profile_picture: { type: String, required: false }
});

const User = mongoose.model("User", UserSchema);
Expand Down
Loading

0 comments on commit d554401

Please sign in to comment.