Backend: auth for bookmarks and categories

This commit is contained in:
Paweł Malak 2021-11-11 16:43:00 +01:00
parent 22471d64c7
commit 0d36c5cf94
6 changed files with 39 additions and 12 deletions

View file

@ -6,8 +6,12 @@ const { Sequelize } = require('sequelize');
// @route GET /api/bookmarks
// @access Public
const getAllBookmarks = asyncWrapper(async (req, res, next) => {
// bookmarks visibility
const where = req.isAuthenticated ? {} : { isPublic: true };
const bookmarks = await Bookmark.findAll({
order: [[Sequelize.fn('lower', Sequelize.col('name')), 'ASC']],
where,
});
res.status(200).json({

View file

@ -6,8 +6,10 @@ const Bookmark = require('../../models/Bookmark');
// @route GET /api/bookmarks/:id
// @access Public
const getSingleBookmark = asyncWrapper(async (req, res, next) => {
const visibility = req.isAuthenticated ? {} : { isPublic: true };
const bookmark = await Bookmark.findOne({
where: { id: req.params.id },
where: { id: req.params.id, ...visibility },
});
if (!bookmark) {

View file

@ -12,15 +12,20 @@ const getAllCategories = asyncWrapper(async (req, res, next) => {
let categories;
// categories visibility
const where = req.isAuthenticated ? {} : { isPublic: true };
if (orderType == 'name') {
categories = await Category.findAll({
include: [
{
model: Bookmark,
as: 'bookmarks',
where,
},
],
order: [[Sequelize.fn('lower', Sequelize.col('Category.name')), 'ASC']],
where,
});
} else {
categories = await Category.findAll({
@ -28,9 +33,11 @@ const getAllCategories = asyncWrapper(async (req, res, next) => {
{
model: Bookmark,
as: 'bookmarks',
where,
},
],
order: [[orderType, 'ASC']],
where,
});
}

View file

@ -7,12 +7,15 @@ const Bookmark = require('../../models/Bookmark');
// @route GET /api/categories/:id
// @access Public
const getSingleCategory = asyncWrapper(async (req, res, next) => {
const visibility = req.isAuthenticated ? {} : { isPublic: true };
const category = await Category.findOne({
where: { id: req.params.id },
where: { id: req.params.id, ...visibility },
include: [
{
model: Bookmark,
as: 'bookmarks',
where: visibility,
},
],
});

View file

@ -1,6 +1,8 @@
const express = require('express');
const router = express.Router();
const upload = require('../middleware/multer');
// middleware
const { upload, auth, requireAuth } = require('../middleware');
const {
createBookmark,
@ -10,12 +12,15 @@ const {
deleteBookmark,
} = require('../controllers/bookmarks');
router.route('/').post(upload, createBookmark).get(getAllBookmarks);
router
.route('/')
.post(auth, requireAuth, upload, createBookmark)
.get(auth, getAllBookmarks);
router
.route('/:id')
.get(getSingleBookmark)
.put(upload, updateBookmark)
.delete(deleteBookmark);
.get(auth, getSingleBookmark)
.put(auth, requireAuth, upload, updateBookmark)
.delete(auth, requireAuth, deleteBookmark);
module.exports = router;

View file

@ -1,6 +1,9 @@
const express = require('express');
const router = express.Router();
// middleware
const { auth, requireAuth } = require('../middleware');
const {
createCategory,
getAllCategories,
@ -10,14 +13,17 @@ const {
reorderCategories,
} = require('../controllers/categories');
router.route('/').post(createCategory).get(getAllCategories);
router
.route('/')
.post(auth, requireAuth, createCategory)
.get(auth, getAllCategories);
router
.route('/:id')
.get(getSingleCategory)
.put(updateCategory)
.delete(deleteCategory);
.get(auth, getSingleCategory)
.put(auth, requireAuth, updateCategory)
.delete(auth, requireAuth, deleteCategory);
router.route('/0/reorder').put(reorderCategories);
router.route('/0/reorder').put(auth, requireAuth, reorderCategories);
module.exports = router;