const express = require("express");
const router = express.Router();
const jwt = require("jsonwebtoken");
const posts = require("./posts");
const auth = require("./auth");
const accounts = require("./accounts");
const files = require("./files");
const stats = require('./stats');
// Authentication middleware ****
function authMiddleware(req, res, next) {
// return next();
const token = req.header("x-access-token");
if (!token) {
// Ya gotta pass a token
res.status(401).json({ error: "Please pass a token" });
} else {
return jwt.verify(token, process.env.SECRET_KEY, (err, decoded) => {
// mc.get('user', function (err, val) {
// if (err != null) {
// console.log('Error getting value: ' + err)
// }
// else if (val.toString('utf8') == decoded.email) {
// console.log("Verified");
// }
// else {
// console.log(val.toString('utf8'))
// }
// })
if (err) {
res.status(403).json({ error: "The token is incorrect" });
} else {
req.user = decoded;
next();
}
})
}
}
// What will be returned when you require this path
module.exports = function (db, mc) {
// Serve file routes
router.use("/files", files(db, authMiddleware));
// Serve post api content
router.use("/posts", posts(db, authMiddleware));
// Serve authorized login content
router.use("/auth", auth(db));
// Individual accounts
router.use("/accounts", accounts(db, authMiddleware));
// Stats api
router.use("/stats", stats(db, mc, authMiddleware));
return router;
};
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}