UIAngular/Server/src/routes/api/require-auth.js

70 lines
2.1 KiB
JavaScript

var express = require('express');
var router = express.Router();
var multer = require('multer');
var fs = require('fs');
var tmpStorage = process.env['HOME'] + '/webapps/ofbstatic/media/sermons/tmp/';
var finalStorage = process.env['HOME'] + '/webapps/ofbstatic/media/sermons/';
console.log("Temp",tmpStorage);
console.log("Final",finalStorage);
var storage = multer.diskStorage({
destination: function (req, file, cb) {
if (req.hostname.startsWith('localhost')){
tmpStorage = '/home/me/Music/Sermons/tmp/';
finalStorage = '/home/me/Music/Sermons/';
}
cb(null, tmpStorage);
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
})
var upload = multer({ storage:storage });
var auth = require('../../authentication/login')
function removeFile(filename){
if (filename == null)
return;
filepath = tmpStorage + filename;
fs.unlinkSync(filepath);
}
//Invoked for all requests
router.use(upload.single('file'),function(req,res,next){
var filename = req.file ? req.file.filename : null;
if (!req.signedCookies.tokenUser || !req.signedCookies.tokenId || !req.signedCookies.tokenValue){
removeFile(filename);
res.status(400).json({"status":400,"message":"invalid token cookie. token needs a userId, id, and value"});
return;
}
var token = {};
token.userId = req.signedCookies.tokenUser;
token.id = req.signedCookies.tokenId;
token.value = req.signedCookies.tokenValue;
auth.verifyToken(token,function(error,isValid){
if (error){
removeFile(filename);
res.status(400).json({"status":400,"message":"error validating token"});
return;
} else {
if (!isValid){
removeFile(filename);
res.status(400).json({"status":400,"message":"invalid token"});
return;
}
}
});
if (req.file){
req.body.file = req.file.originalname;
req.body.finalPath = finalStorage + req.file.filename;
req.body.tmpPath = req.file.destination + req.file.filename;
}
next();
});
module.exports = router;