2024-02-04 22:28:42 +01:00
|
|
|
import j from "joi";
|
2024-01-31 00:27:53 +01:00
|
|
|
import { Router } from "express";
|
2024-02-04 22:28:42 +01:00
|
|
|
import { ENVIRONMENT, JWT_KEY } from "../Modules/Constants";
|
2024-01-31 00:27:53 +01:00
|
|
|
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";
|
2024-01-31 00:27:53 +01:00
|
|
|
|
|
|
|
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 } })));
|
|
|
|
|
2024-01-31 00:27:53 +01:00
|
|
|
export default {
|
|
|
|
App,
|
|
|
|
DefaultAPI: "/api/debug"
|
|
|
|
}
|