Skip to content

Commit 83d5f7e

Browse files
committed
added user check on delete poll
1 parent 7ca21c4 commit 83d5f7e

File tree

3 files changed

+34
-20
lines changed

3 files changed

+34
-20
lines changed

src/poll/Poll.dto.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,9 @@ export class GetPollsDto {
8686
@IsEnum(['asc', 'desc'])
8787
sortOrder?: 'asc' | 'desc';
8888
}
89+
90+
export class DeletePollDto {
91+
@IsString()
92+
@IsNotEmpty()
93+
worldID: string;
94+
}

src/poll/poll.controller.ts

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ import {
1010
Delete,
1111
UsePipes,
1212
ValidationPipe,
13+
BadRequestException,
1314
} from '@nestjs/common';
1415
import { Response } from 'express';
1516
import { PollService } from './poll.service';
16-
import { CreatePollDto, GetPollsDto } from './Poll.dto';
17+
import { CreatePollDto, DeletePollDto, GetPollsDto } from './Poll.dto';
1718

1819
@Controller('poll')
1920
export class PollController {
@@ -35,15 +36,10 @@ export class PollController {
3536
try {
3637
const polls = await this.pollService.getPolls(query);
3738
return res.status(200).json(polls);
38-
} catch (error) {
39-
if (error.message === 'User not found') {
40-
return res.status(404).json({ message: error.message });
41-
} else if (error.message === 'worldId Not Provided') {
42-
return res.status(404).json({ message: error.message });
43-
}
44-
return res
45-
.status(500)
46-
.json({ message: 'Internal server error', error: error.message });
39+
} catch (error: unknown) {
40+
const errorMessage =
41+
error instanceof Error ? error.message : 'An unexpected error occurred';
42+
throw new BadRequestException(errorMessage);
4743
}
4844
}
4945

@@ -64,16 +60,19 @@ export class PollController {
6460
}
6561

6662
@Delete(':id')
67-
async deletePoll(@Param('id') id: number, @Res() res: Response) {
68-
const userId = 1; // need to implement Auth
63+
async deletePoll(
64+
@Param('id') id: number,
65+
@Body() query: DeletePollDto,
66+
@Res() res: Response,
67+
) {
6968
try {
70-
const poll = await this.pollService.deletePoll(userId, Number(id));
69+
const poll = await this.pollService.deletePoll(Number(id), query);
7170

7271
return res.status(200).json({ message: 'Poll deleted', poll: poll });
73-
} catch (error) {
74-
return res
75-
.status(500)
76-
.json({ message: 'Internal server error', error: error.message });
72+
} catch (error: unknown) {
73+
const errorMessage =
74+
error instanceof Error ? error.message : 'An unexpected error occurred';
75+
throw new BadRequestException(errorMessage);
7776
}
7877
}
7978
}

src/poll/poll.service.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { BadRequestException, Injectable } from '@nestjs/common';
22
import { ActionType, Prisma } from '@prisma/client';
33
import { DatabaseService } from 'src/database/database.service';
4-
import { CreatePollDto, GetPollsDto } from './Poll.dto';
4+
import { CreatePollDto, DeletePollDto, GetPollsDto } from './Poll.dto';
55

66
@Injectable()
77
export class PollService {
@@ -152,15 +152,24 @@ export class PollService {
152152
return { user, poll, isActive };
153153
}
154154

155-
async deletePoll(userId: number, pollId: number) {
155+
async deletePoll(pollId: number, query: DeletePollDto) {
156+
const user = await this.databaseService.user.findUnique({
157+
where: { worldID: query.worldID },
158+
select: { id: true },
159+
});
160+
161+
if (!user) {
162+
throw new Error('User not found');
163+
}
164+
156165
const poll = await this.databaseService.poll.findUnique({
157166
where: { pollId },
158167
});
159168

160169
if (!poll) {
161170
throw new Error('Poll not found');
162171
}
163-
if (poll.authorUserId !== userId) {
172+
if (poll.authorUserId !== user.id) {
164173
throw new Error('User Not Authorized');
165174
}
166175

0 commit comments

Comments
 (0)