import * as express from "express"; import * as cors from "cors"; import * as bodyparser from "body-parser"; import { isAuthenticated, performLogin } from "./security/auth"; import UserRouter from "./api/user"; import ClassRouter from "./api/class"; import LevelRouter from "./api/level"; const baseRouter = express.Router(); const authRouter = express.Router(); import { MongoClient } from "mongodb"; const assert = require('assert'); (async function() { // Connection URL const url = 'mongodb://128.1.0.2:27017/myproject'; // Database Name const dbName = 'myproject'; let client: MongoClient; try { // Use connect method to connect to the Server client = await MongoClient.connect(url); console.log("Connected to MongoDB"); } catch (err) { console.log(err.stack); assert(1, 2); } const db = client.db(dbName); console.log("Connected to the database"); const app = express(); app.use(bodyparser.json()); app.options("*", cors()); app.use((req, res, next) => { // Every route should have access to the database so that // we can easily make calls to it // @ts-ignore req.db = db; next(); }); app.use("/api/level", LevelRouter); app.use("/api/class", ClassRouter); app.use("/api/user", UserRouter); app.get("/api/levels", async (req, res) => { // TODO: if (levels) const levels = (await db.collection("levels").find() .toArray()) .map((el) => { let tmp = Object.assign({}, el); delete tmp.queue; delete tmp._id; return tmp; }); res.send({ error: "0", data: { levels, }, }); }); app.get("/api/health", (req, res) => { res.send({ error: "0", data: { msg: "lol", }, }); }); app.post("/api/login", async (req, res) => { // Check if all arguments were sent const { body } = req; if (!body || !("username" in body) || !("password" in body)) { res.send({ error: "400", data: { msg: "Username or password not specified", }, }); return; } // Try to log the user in try { const userData = await performLogin(body.username, body.password, db); res.send({ error: "0", data: userData, }); } catch (err) { console.log("Could not resolve login promise!", err); // If anything was wrong, just tell the client res.send({ error: "1", data: { msg: "Username or password is wrong", }, }); } }); const server = app.listen(8080, () => { console.log("Starting on port 8080"); }); })();