aboutsummaryrefslogtreecommitdiff
path: root/pages/api/v2/admin
diff options
context:
space:
mode:
Diffstat (limited to 'pages/api/v2/admin')
-rw-r--r--pages/api/v2/admin/broadcast/index.js54
-rw-r--r--pages/api/v2/admin/bug-report/index.js30
2 files changed, 57 insertions, 27 deletions
diff --git a/pages/api/v2/admin/broadcast/index.js b/pages/api/v2/admin/broadcast/index.js
index d3d3af0..470d61d 100644
--- a/pages/api/v2/admin/broadcast/index.js
+++ b/pages/api/v2/admin/broadcast/index.js
@@ -1,9 +1,17 @@
import { rateLimitStrict, redis } from "@/lib/redis";
-// import { getServerSession } from "next-auth";
-// import { authOptions } from "pages/api/auth/[...nextauth]";
+import { getServerSession } from "next-auth";
+import { authOptions } from "pages/api/auth/[...nextauth]";
export default async function handler(req, res) {
// Check if the custom header "X-Your-Custom-Header" is present and has a specific value
+ const sessions = await getServerSession(req, res, authOptions);
+
+ const admin = sessions?.user?.name === process.env.ADMIN_USERNAME;
+ // if req.method === POST and admin === false return 401
+ if (!admin && req.method === "DELETE") {
+ return res.status(401).json({ message: "Unauthorized" });
+ }
+
const customHeaderValue = req.headers["x-broadcast-key"];
if (customHeaderValue !== "get-broadcast") {
@@ -21,14 +29,40 @@ export default async function handler(req, res) {
});
}
- const getId = await redis.get(`broadcast`);
- if (getId) {
- const broadcast = JSON.parse(getId);
- return res
- .status(200)
- .json({ message: broadcast.message, startAt: broadcast.startAt });
- } else {
- return res.status(200).json({ message: "No broadcast" });
+ if (req.method === "POST") {
+ const { message, startAt = undefined, show = false } = req.body;
+ if (!message) {
+ return res.status(400).json({ message: "Message is required" });
+ }
+
+ const broadcastContent = {
+ message,
+ startAt,
+ show,
+ };
+ await redis.set(`broadcasts`, JSON.stringify(broadcastContent));
+ return res.status(200).json({ message: "Broadcast created" });
+ } else if (req.method === "DELETE") {
+ const br = await redis.get(`broadcasts`);
+ // set broadcast show as false
+ if (br) {
+ const broadcast = JSON.parse(br);
+ broadcast.show = false;
+ await redis.set(`broadcasts`, JSON.stringify(broadcast));
+ }
+ return res.status(200).json({ message: "Broadcast deleted" });
+ } else if (req.method === "GET") {
+ const getId = await redis.get(`broadcasts`);
+ if (getId) {
+ const broadcast = JSON.parse(getId);
+ return res.status(200).json({
+ message: broadcast.message,
+ startAt: broadcast.startAt,
+ show: broadcast.show,
+ });
+ } else {
+ return res.status(200).json({ message: "No broadcast" });
+ }
}
}
diff --git a/pages/api/v2/admin/bug-report/index.js b/pages/api/v2/admin/bug-report/index.js
index fc5ee77..508e6cd 100644
--- a/pages/api/v2/admin/bug-report/index.js
+++ b/pages/api/v2/admin/bug-report/index.js
@@ -8,16 +8,6 @@ export default async function handler(req, res) {
// create random id each time the endpoint is called
const id = Math.random().toString(36).substr(2, 9);
- // if (!admin) {
- // return res.status(401).json({ message: "Unauthorized" });
- // }
- const { data } = req.body;
-
- // if method is not POST return message "Method not allowed"
- if (req.method !== "POST") {
- return res.status(405).json({ message: "Method not allowed" });
- }
-
try {
if (redis) {
try {
@@ -29,16 +19,22 @@ export default async function handler(req, res) {
});
}
- const getId = await redis.get(`report:${id}`);
- if (getId) {
+ if (req.method === "POST") {
+ const { data } = req.body;
+
+ data.id = id;
+
+ await redis.set(`report:${id}`, JSON.stringify(data));
return res
.status(200)
- .json({ message: `Data already exist for id: ${id}` });
+ .json({ message: `Report has successfully sent, with Id of ${id}` });
+ } else if (req.method === "DELETE") {
+ const { reportId } = req.body;
+ await redis.del(`report:${reportId}`);
+ return res.status(200).json({ message: `Report has been deleted` });
+ } else {
+ return res.status(405).json({ message: "Method not allowed" });
}
- await redis.set(`report:${id}`, JSON.stringify(data));
- return res
- .status(200)
- .json({ message: `Report has successfully sent, with Id of ${id}` });
}
return res.status(200).json({ message: "redis is not defined" });