From 94e85e04d58f34439100e928eade29aa150eaf41 Mon Sep 17 00:00:00 2001 From: KGrzeg Date: Wed, 1 Mar 2023 03:36:49 +0100 Subject: [PATCH] Optionally server static files --- server/server.js | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/server/server.js b/server/server.js index 96badd2..5ae1cd3 100644 --- a/server/server.js +++ b/server/server.js @@ -9,6 +9,8 @@ import auth from './Auth.js' import db from './Database.js' import jg from './JusticeGuard.js' +const router = express.Router(); + const protect = (req, res, next) => { const authHeader = req.headers.authorization; @@ -42,19 +44,21 @@ const neededArguments = (args) => { const app = express() app.use(morgan('combined')) -app.use(express.json()) app.use(cors()) -app.get("/", (_, res) => { +router.use(express.json()) + +router.get("/", (_, res) => { res.json({ message: "Hello! API here" }) }); -app.get("/secured", protect, (req, res) => { +router.get("/secured", protect, (req, res) => { res.json({ message: "You can see it!", payload: req.user }) }) -app.post("/signup", neededArguments(['name']), async (req, res) => { +router.post("/signup", neededArguments(['name']), async (req, res) => { + const user = await auth.createAccount(req.body.name) if (user.error) @@ -65,7 +69,7 @@ app.post("/signup", neededArguments(['name']), async (req, res) => { res.json(user) }) -app.post("/login", neededArguments(['key']), async (req, res) => { +router.post("/login", neededArguments(['key']), async (req, res) => { const user = auth.login(req.body.key) if (user.error) @@ -76,7 +80,7 @@ app.post("/login", neededArguments(['key']), async (req, res) => { res.json(user) }) -app.post("/record", protect, neededArguments(['points', 'shoots', 'time']), jg, async (req, res) => { +router.post("/record", protect, neededArguments(['points', 'shoots', 'time']), jg, async (req, res) => { db.updateRecord(req.user.name, req.body.points) const rank = db.getRank(req.user.name) @@ -88,14 +92,14 @@ app.post("/record", protect, neededArguments(['points', 'shoots', 'time']), jg, }) }) -app.get("/top", (req, res) => { +router.get("/top", (req, res) => { res.json({ status: "ok", records: db.getTop() }) }) -app.get("/start", protect, async (req, res) => { +router.get("/start", protect, async (req, res) => { await db.setLastPlayedToNow(req.user.name) res.json({ @@ -103,13 +107,20 @@ app.get("/start", protect, async (req, res) => { }) }) +if (process.env.STATIC) { + app.use(express.static(process.env.STATIC)); + app.use("/api", router); +} else { + app.use("/", router); +} + app.use(function (err, req, res, next) { if (err.name === 'UnauthorizedError') { res.status(401).send('invalid token...'); } }); -await db.read() +(async function () { await db.read() })() const port = process.env.PORT || 3000 app.listen(port, () => {