Partypack/Server/Source/Routes/Debug.ts

58 lines
2.1 KiB
TypeScript
Raw Normal View History

2024-02-04 22:28:42 +01:00
import j from "joi";
import { Router } from "express";
2024-02-04 22:28:42 +01:00
import { ENVIRONMENT, JWT_KEY } from "../Modules/Constants";
import { RequireAuthentication, ValidateBody } from "../Modules/Middleware";
2024-02-03 01:41:24 +01:00
import { User, UserPermissions } from "../Schemas/User";
import { Song } from "../Schemas/Song";
2024-02-04 22:28:42 +01:00
import { sign } from "jsonwebtoken";
const App = Router();
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
// ! NEVER EVER ENABLE THESE ON PRODUCTION OR STAGING
App.use((req, res, next) => {
if (ENVIRONMENT !== "dev" && ENVIRONMENT !== "debug")
return res.status(403).send("The current server environment does not allow for debugging endpoints. Switch to `dev` or `debug` to enable them.");
next();
})
App.post("/update/permissions",
RequireAuthentication(),
ValidateBody(j.object({
Perms: j.number().valid(...(Object.values(UserPermissions).filter(x => !isNaN(Number(x))))).required()
})),
async (req, res) => {
req.user!.PermissionLevel! = req.body.Perms as UserPermissions;
await req.user!.save();
res.json(req.user);
})
2024-02-04 22:28:42 +01:00
App.post("/create/auth",
ValidateBody(j.object({
ID: j.string().min(10).max(25).required()
})),
(req, res) => res.send(sign(req.body, JWT_KEY as string)));
2024-02-03 01:41:24 +01:00
App.get("/raw/song/:SongID",
async (req, res) => res.json(await Song.findOne({ where: { ID: req.params.SongID } })));
App.get("/raw/user/:UserID",
async (req, res) => res.json(await User.findOne({ where: { ID: req.params.UserID } })));
export default {
App,
DefaultAPI: "/api/debug"
}