Partypack/Server/Source/Routes/Debug.ts
2024-02-03 01:41:24 +01:00

51 lines
1.9 KiB
TypeScript

import { Router } from "express";
import { ENVIRONMENT } from "../Modules/Constants";
import { RequireAuthentication, ValidateBody } from "../Modules/Middleware";
import { User, UserPermissions } from "../Schemas/User";
import j from "joi";
import { Song } from "../Schemas/Song";
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);
})
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"
}