Removed express-session middleware & Updated to use MongoDB instead of json files
This commit is contained in:
parent
028a14fbe0
commit
9152a80139
9 changed files with 285 additions and 387 deletions
|
@ -3,104 +3,80 @@ const axios = require("axios");
|
|||
//Local Imports & Configs
|
||||
const asUser = require("../api/user");
|
||||
const upload = require("../api/upload");
|
||||
const storage = require("../api/storage");
|
||||
const config = require("../config.json");
|
||||
//Establish path and create router
|
||||
/** Absolute Router Path /api/stash*/
|
||||
const router = express.Router();
|
||||
|
||||
const cairoMiddleware = (req, res, next) => {
|
||||
if (req.token == null) return next();
|
||||
else
|
||||
axios
|
||||
.get(config.Server.authServer, {
|
||||
headers: { authorization: `Bearer ${req.token}` },
|
||||
})
|
||||
.then((authRes) => {
|
||||
if (authRes.status !== 200) return res.status(authres.status);
|
||||
if (authRes.data != null && authRes.data.uuid != null) {
|
||||
asUser.load(authRes.data.uuid).then((user) => {
|
||||
req.user = user;
|
||||
next();
|
||||
});
|
||||
} else res.status(500).json(authRes.data);
|
||||
})
|
||||
.catch((e) => {
|
||||
if (e.response != null) res.sendStatus(e.response.status);
|
||||
else res.sendStatus(500);
|
||||
});
|
||||
};
|
||||
router.use(cairoMiddleware);
|
||||
const authMiddleware = (req, res, next) => {
|
||||
if (req.session.uuid != null) return next();
|
||||
var headers = {};
|
||||
var bearerToken = req.get(config.Server.jwtHeader);
|
||||
if (bearerToken == null) return res.sendStatus(401);
|
||||
headers[config.Server.jwtHeader] = bearerToken;
|
||||
axios
|
||||
.get(config.Server.authServer, { headers })
|
||||
.then((authRes) => {
|
||||
if (authRes.status !== 200) return res.sendStatus(401);
|
||||
if (authRes.data != null) {
|
||||
req.session.uuid = authRes.data.uuid;
|
||||
next();
|
||||
} else res.sendStatus(401);
|
||||
})
|
||||
.catch((e) => {
|
||||
if (e.response != null) res.sendStatus(e.response.status);
|
||||
else res.sendStatus(401);
|
||||
});
|
||||
if (req.token == null) return res.sendStatus(401);
|
||||
next();
|
||||
};
|
||||
|
||||
router.get("/files", authMiddleware, (req, res) => {
|
||||
const files = asUser.getOwnedFiles(req.session.uuid);
|
||||
res.status(200).json(files);
|
||||
});
|
||||
router.get("/files", authMiddleware, (req, res) =>
|
||||
asUser.getOwnedFiles(req.user._id).then((files) => {
|
||||
res.status(200).json(files);
|
||||
})
|
||||
);
|
||||
|
||||
router.post("/upload", authMiddleware, (req, res) => {
|
||||
upload.userUpload(req, res, (err) => {
|
||||
if (err || req.file == null) return res.sendStatus(500);
|
||||
const fileData = asUser.uploadFile(req.session.uuid, req.file);
|
||||
if (fileData == null) {
|
||||
asUser.uploadFile(req.user._id, req.file).then((file) => {
|
||||
if (file != null) return res.json(file);
|
||||
upload.cancelUpload(req.file.path);
|
||||
return res.sendStatus(500);
|
||||
}
|
||||
res.json(fileData);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
router.post("/delete", authMiddleware, (req, res) => {
|
||||
if (!req.body || !(req.body instanceof Array)) {
|
||||
return res.sendStatus(400);
|
||||
}
|
||||
const failed = asUser.deleteFiles(req.session.uuid, req.body);
|
||||
if (!failed) return res.sendStatus(200);
|
||||
res.status(500).json(failed);
|
||||
});
|
||||
|
||||
router.get("/download", async (req, res) => {
|
||||
if (!req.query || (!req.query.target && !req.query.zipTarget))
|
||||
return res.sendStatus(404);
|
||||
if (req.query.target) {
|
||||
const filePath = asUser.getFilePath(req.session.uuid, req.query.target);
|
||||
if (!filePath) return res.sendStatus(404);
|
||||
return res.download(filePath);
|
||||
}
|
||||
//ZIPS ARE NOT SUPPORTED YET
|
||||
return res.sendStatus(404);
|
||||
if (req.session.uuid == null) return res.sendStatus(401);
|
||||
if (req.query.zipTarget) {
|
||||
const zipPath = asUser.getZip(req.session.uuid, req.query.zipTarget);
|
||||
if (zipPath === true) return res.sendStatus(503);
|
||||
if (zipPath == null) return res.sendStatus(404);
|
||||
res.download(zipPath);
|
||||
}
|
||||
});
|
||||
|
||||
//TODO
|
||||
router.post("/download", authMiddleware, (req, res) => {
|
||||
//ZIPS ARE NOT SUPPORTED YET
|
||||
return res.sendStatus(404);
|
||||
if (!req.body || !(req.body instanceof Array)) {
|
||||
return res.sendStatus(400);
|
||||
}
|
||||
asUser.requestZip(req.session.uuid, req.body, (zipUuid) => {
|
||||
console.log("Client can start checking");
|
||||
return res.json(zipUuid);
|
||||
if (!req.body || !(req.body instanceof Array)) return res.sendStatus(400);
|
||||
asUser.deleteFiles(req.user._id, req.body).then((failed) => {
|
||||
if (!failed) return res.sendStatus(200);
|
||||
res.status(500).json(failed);
|
||||
});
|
||||
});
|
||||
|
||||
router.get("/raw", (req, res) => {
|
||||
if (!req.query || !req.query.target) return res.sendStatus(404);
|
||||
const filePath = asUser.getFilePath(req.session.uuid, req.query.target);
|
||||
if (!filePath) return res.sendStatus(404);
|
||||
res.sendFile(filePath);
|
||||
router.get("/download", (req, res) => {
|
||||
if (!req.query || (!req.query.target && !req.query.zipTarget))
|
||||
return res.sendStatus(404);
|
||||
const userId = req.user == null ? null : req.user._id;
|
||||
if (req.query.target)
|
||||
return storage.getFile(userId, req.query.target).then((file) => {
|
||||
if (file) return res.download(file.path);
|
||||
return res.sendStatus(404);
|
||||
});
|
||||
return res.sendStatus(404);
|
||||
});
|
||||
|
||||
router.post("/public", authMiddleware, async (req, res) => {
|
||||
if (!req.body || !(req.body instanceof Array)) {
|
||||
return res.sendStatus(400);
|
||||
}
|
||||
const failed = asUser.publicfyFiles(req.session.uuid, req.body);
|
||||
if (!req.body || !(req.body instanceof Array)) return res.sendStatus(400);
|
||||
const failed = asUser.publicfyFiles(req.user._id, req.body);
|
||||
if (!failed) return res.sendStatus(200);
|
||||
res.status(500).json(failed);
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
Reference in a new issue