mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
fix(api): use query builder for user requests endpoint (#2119)
This commit is contained in:
@@ -194,14 +194,11 @@ router.use('/:id/settings', userSettingsRoutes);
|
|||||||
router.get<{ id: string }, UserRequestsResponse>(
|
router.get<{ id: string }, UserRequestsResponse>(
|
||||||
'/:id/requests',
|
'/:id/requests',
|
||||||
async (req, res, next) => {
|
async (req, res, next) => {
|
||||||
const userRepository = getRepository(User);
|
|
||||||
const requestRepository = getRepository(MediaRequest);
|
|
||||||
|
|
||||||
const pageSize = req.query.take ? Number(req.query.take) : 20;
|
const pageSize = req.query.take ? Number(req.query.take) : 20;
|
||||||
const skip = req.query.skip ? Number(req.query.skip) : 0;
|
const skip = req.query.skip ? Number(req.query.skip) : 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const user = await userRepository.findOne({
|
const user = await getRepository(User).findOne({
|
||||||
where: { id: Number(req.params.id) },
|
where: { id: Number(req.params.id) },
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -209,12 +206,32 @@ router.get<{ id: string }, UserRequestsResponse>(
|
|||||||
return next({ status: 404, message: 'User not found.' });
|
return next({ status: 404, message: 'User not found.' });
|
||||||
}
|
}
|
||||||
|
|
||||||
const [requests, requestCount] = await requestRepository.findAndCount({
|
if (
|
||||||
where: { requestedBy: user },
|
user.id !== req.user?.id &&
|
||||||
order: { id: 'DESC' },
|
!req.user?.hasPermission(
|
||||||
take: pageSize,
|
[Permission.MANAGE_REQUESTS, Permission.REQUEST_VIEW],
|
||||||
skip,
|
{ type: 'or' }
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return next({
|
||||||
|
status: 403,
|
||||||
|
message: "You do not have permission to view this user's requests.",
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const [requests, requestCount] = await getRepository(MediaRequest)
|
||||||
|
.createQueryBuilder('request')
|
||||||
|
.leftJoinAndSelect('request.media', 'media')
|
||||||
|
.leftJoinAndSelect('request.seasons', 'seasons')
|
||||||
|
.leftJoinAndSelect('request.modifiedBy', 'modifiedBy')
|
||||||
|
.leftJoinAndSelect('request.requestedBy', 'requestedBy')
|
||||||
|
.andWhere('requestedBy.id = :id', {
|
||||||
|
id: req.user?.id,
|
||||||
|
})
|
||||||
|
.orderBy('request.id', 'DESC')
|
||||||
|
.take(pageSize)
|
||||||
|
.skip(skip)
|
||||||
|
.getManyAndCount();
|
||||||
|
|
||||||
return res.status(200).json({
|
return res.status(200).json({
|
||||||
pageInfo: {
|
pageInfo: {
|
||||||
|
Reference in New Issue
Block a user