Files
vercel__next.js/examples/blog-with-comment/lib/deleteComment.ts
Steven 4466ba436b chore(examples): use default prettier for examples/templates (#60530)
## Description
This PR ensures that the default prettier config is used for examples
and templates.

This config is compatible with `prettier@3` as well (upgrading prettier
is bigger change that can be a future PR).

## Changes
- Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will
be needed upgrading to prettier@3)
- Added `examples/.prettierrc.json` with default config (this will
change every example)
- Added `packages/create-next-app/templates/.prettierrc.json` with
default config (this will change every template)

## Related

- Fixes #54402
- Closes #54409
2024-01-11 16:01:44 -07:00

44 lines
1.2 KiB
TypeScript

import type { NextApiRequest, NextApiResponse } from "next";
import type { User, Comment } from "../interfaces";
import redis from "./redis";
import getUser from "./getUser";
import clearUrl from "./clearUrl";
export default async function deleteComments(
req: NextApiRequest,
res: NextApiResponse,
) {
const url = clearUrl(req.headers.referer);
const { comment }: { url: string; comment: Comment } = req.body;
const { authorization } = req.headers;
if (!comment || !authorization) {
return res.status(400).json({ message: "Missing parameter." });
}
if (!redis) {
return res.status(500).json({ message: "Failed to connect to redis." });
}
try {
// verify user token
const user: User = await getUser(authorization);
if (!user) return res.status(400).json({ message: "Invalid token." });
comment.user.email = user.email;
const isAdmin = process.env.NEXT_PUBLIC_AUTH0_ADMIN_EMAIL === user.email;
const isAuthor = user.sub === comment.user.sub;
if (!isAdmin && !isAuthor) {
return res.status(400).json({ message: "Need authorization." });
}
// delete
await redis.lrem(url, 0, JSON.stringify(comment));
return res.status(200).end();
} catch (err) {
return res.status(400);
}
}