renamed
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
const blogsRouter = require("express").Router();
|
||||
const Blog = require("../models/blog");
|
||||
const User = require("../models/user");
|
||||
const middleware = require("../utils/middleware");
|
||||
|
||||
blogsRouter.get("", (request, response) => {
|
||||
Blog.find({})
|
||||
.populate("user", { name: 1 })
|
||||
.then((blogs) => {
|
||||
response.json(blogs);
|
||||
});
|
||||
});
|
||||
|
||||
blogsRouter.delete("/:id", middleware.userExtractor, async (req, res) => {
|
||||
const id = req.params.id;
|
||||
const blog = await Blog.findById(id);
|
||||
|
||||
let result = null;
|
||||
const userId = req.user._id.toString();
|
||||
|
||||
if (blog.user.toString() === userId) {
|
||||
const newUser = {
|
||||
...req.user._doc,
|
||||
blogs: [...req.user._doc.blogs.filter((el) => el.toString() !== id)],
|
||||
};
|
||||
await User.findOneAndUpdate({ _id: userId }, newUser);
|
||||
result = await Blog.findByIdAndDelete(id);
|
||||
return res.json(result);
|
||||
}
|
||||
return res.end();
|
||||
});
|
||||
|
||||
blogsRouter.put("/:id", (req, res) => {
|
||||
const id = req.params.id;
|
||||
Blog.findOneAndUpdate({ _id: id }, req.body).then((result) => {
|
||||
res.json(result);
|
||||
});
|
||||
});
|
||||
|
||||
blogsRouter.post("", middleware.userExtractor, async (req, res) => {
|
||||
const { title, url } = req.body;
|
||||
const user = req.user;
|
||||
const blog = new Blog({
|
||||
title,
|
||||
author: user.name,
|
||||
url,
|
||||
likes: 0,
|
||||
user: user.id,
|
||||
});
|
||||
const savedBlog = await blog.save();
|
||||
user.blogs = user.blogs.concat(savedBlog._id);
|
||||
user.save();
|
||||
res.json(savedBlog);
|
||||
});
|
||||
|
||||
module.exports = blogsRouter;
|
||||
@@ -0,0 +1,24 @@
|
||||
const loginRouter = require("express").Router();
|
||||
const jwt = require("jsonwebtoken");
|
||||
const bcrypt = require("bcrypt");
|
||||
const User = require("../models/user");
|
||||
const config = require("../utils/config");
|
||||
|
||||
loginRouter.post("", async (req, res) => {
|
||||
const { username, password } = req.body;
|
||||
|
||||
const user = await User.findOne({ username });
|
||||
const passwordCorrect =
|
||||
user === null ? false : await bcrypt.compare(password, user.password);
|
||||
if (!(user && passwordCorrect))
|
||||
return res.status(401).json({ error: "invalid username or passowrd" });
|
||||
|
||||
const userForToken = {
|
||||
username: user.username,
|
||||
id: user._id,
|
||||
};
|
||||
const token = jwt.sign(userForToken, config.SECRET);
|
||||
res.status(200).send({ token, username: user.username, name: user.name });
|
||||
});
|
||||
|
||||
module.exports = loginRouter;
|
||||
@@ -0,0 +1,36 @@
|
||||
const usersRouter = require("express").Router();
|
||||
const User = require("../models/user");
|
||||
const bcrypt = require("bcrypt");
|
||||
|
||||
usersRouter.get("", (request, response) => {
|
||||
User.find({}).then((users) => {
|
||||
response.json(users);
|
||||
});
|
||||
});
|
||||
/*
|
||||
usersRouter.delete("/:id", (request, response) => {
|
||||
const id = request.params.id;
|
||||
User.findByIdAndDelete(id).then((users) => response.json(users));
|
||||
});
|
||||
|
||||
usersRouter.put("/:id", (request, response) => {
|
||||
const id = request.params.id;
|
||||
const data = { ...request.body };
|
||||
User.findOneAndUpdate({ _id: id }, data).then((result) => {
|
||||
response.json(result);
|
||||
});
|
||||
});
|
||||
*/
|
||||
usersRouter.post("", async (request, response) => {
|
||||
const { username, password, name } = request.body;
|
||||
const hashedPassword = await bcrypt.hash(password, 10);
|
||||
const user = new User({ username, password: hashedPassword, name });
|
||||
try {
|
||||
const savedUser = await user.save();
|
||||
response.status(201).json(savedUser);
|
||||
} catch (err) {
|
||||
response.status(400).send(err._message);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = usersRouter;
|
||||
Reference in New Issue
Block a user