-
Notifications
You must be signed in to change notification settings - Fork 100
Expand file tree
/
Copy pathdelete-question.ts
More file actions
30 lines (22 loc) · 1.13 KB
/
delete-question.ts
File metadata and controls
30 lines (22 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { defineEventHandler, getCookie, sendError } from "h3";
import { findQuestion, deleteQuestion } from "~/server/database/repositories/askJackRespository";
import { getUserBySessionToken } from '~/server/app/services/sessionService'
import sendDefaultErrorResponse from "~~/server/app/errors/responses/DefaultErrorsResponse";
export default defineEventHandler(async (event) => {
const body = await readBody(event)
const question = await findQuestion(parseInt(body.questionId))
const authToken = getCookie(event, 'auth_token')
//todo: replace everywere with middleware
if (authToken == null) {
return await sendDefaultErrorResponse(event, 'Unauthorized', 403, 'You must be logged in to answer a question')
}
const user = await getUserBySessionToken(authToken)
if (!user) {
return await sendDefaultErrorResponse(event, 'Unauthorized', 403, 'You must be logged in to answer a question')
}
const isMine = user.id == question.authorId
if (!isMine) {
sendError(event, createError({ statusCode: 403, statusMessage: 'Unauthorized' }))
}
return await deleteQuestion(question.id)
})