StudyCode
401 Unauthorized — «я не знаю, кто ты»: клиент не аутентифицирован (нет токена или он невалиден), нужно войти и повторить. 403 Forbidden — «я знаю, кто ты, но тебе нельзя»: аутентификация прошла, а прав не хватает (обычный пользователь запросил админку). 404 Not Found — ресурс не существует; иногда его возвращают вместо 403, чтобы не раскрывать сам факт существования ресурса (так делает GitHub с приватными репозиториями).
app.delete('/api/posts/:id', async (req, res) => {
const user = await getUserFromToken(req);
if (!user) {
return res.status(401).json({ error: 'Войдите в систему' });
}
const post = await db.posts.findById(req.params.id);
if (!post) {
return res.status(404).json({ error: 'Пост не найден' });
}
if (post.authorId !== user.id && !user.isAdmin) {
return res.status(403).json({ error: 'Это не ваш пост' });
}
await db.posts.delete(post.id);
res.status(204).end();
});