Skip to content

Commit 20de7d4

Browse files
Implement user role-based filtering for fetching blogs
1 parent 17fce90 commit 20de7d4

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/controllers/v1/blog/get_all_blogs.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
11
import config from "@/config";
22
import { logger } from "@/lib/winston";
33
import Blog from "@/models/blog";
4+
import User from "@/models/user";
45
import type { Request, Response } from "express";
56

7+
interface QueryType {
8+
status?: "draft" | "published";
9+
}
10+
611
const getAllBlogs = async (req: Request, res: Response): Promise<void> => {
712
try {
13+
const userId = req.userId;
814
const limit = parseInt(req.query.limit as string) || config.defaultResLimit;
915
const offset =
1016
parseInt(req.query.offset as string) || config.defaultResOffset;
1117
const total = await Blog.countDocuments();
1218

13-
const blogs = await Blog.find()
14-
.select("-__v")
19+
const user = await User.findById(userId).select("role").lean().exec();
20+
const query: QueryType = {};
21+
22+
if (user?.role === "user") {
23+
query.status = "published";
24+
}
25+
26+
const blogs = await Blog.find(query)
27+
.select("-banner.publicId -__v")
28+
.populate("author", "-createdAt -updatedAt -__v")
1529
.limit(limit)
1630
.skip(offset)
31+
.sort({ createdAt: -1 })
1732
.lean()
1833
.exec();
1934

@@ -30,7 +45,7 @@ const getAllBlogs = async (req: Request, res: Response): Promise<void> => {
3045
error,
3146
});
3247

33-
logger.error("Error while getting all users", error);
48+
logger.error("Error while fetching blogs", error);
3449
}
3550
};
3651

src/routes/v1/blog.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import createBlog from "@/controllers/v1/blog/create_blog";
2+
import getAllBlogs from "@/controllers/v1/blog/get_all_blogs";
23
import authorize from "@/lib/authorize";
34
import authenticate from "@/middleware/authenticate";
45
import uploadBlogBanner from "@/middleware/uploadBlogBanner";

0 commit comments

Comments
 (0)