forked from projects/fipamo
181 lines
5.8 KiB
JavaScript
181 lines
5.8 KiB
JavaScript
import RightsManager, {
|
|
|
|
TASK_CREATE,
|
|
TASK_UPDATE,
|
|
TASK_READ,
|
|
TASK_DELETE,
|
|
OBJECT_CLIENT_ADMIN,
|
|
OBJECT_CLIENT_USER,
|
|
OBJECT_PROJECT_CLIENT,
|
|
OBJECT_PROJECT_FOLIO,
|
|
OBJECT_BOOKMARK,
|
|
OBJECT_POST
|
|
|
|
} from '../../tools/utilities/RightsManager';
|
|
|
|
var express = require('express');
|
|
var router = express.Router();
|
|
var multer = require('multer');
|
|
var fs = require('fs-extra');
|
|
var Models = require('../../models');
|
|
var User = require('../../models/User.js');
|
|
var uploadPath = "./content/client-images/";
|
|
fs.ensureDir(uploadPath, function(err) {
|
|
//console.log(err) // => null
|
|
// dir has now been created, including the directory it is to be placed in
|
|
})
|
|
var storage = multer.diskStorage({
|
|
destination: function(req, file, cb) {
|
|
cb(null, uploadPath)
|
|
},
|
|
filename: function(req, file, cb) {
|
|
var splice = file.originalname.split(':');
|
|
cb(null, splice[0]);
|
|
}
|
|
});
|
|
var upload = multer({storage: storage}).array('projectImages');
|
|
var rightsManager = new RightsManager();
|
|
/*
|
|
|
|
Create New Client Project
|
|
|
|
*/
|
|
router.post('/add', function(req, res, next) {
|
|
if (!req.user)
|
|
return res.json({message: "You need to be logged in, champ."})
|
|
User.findById(req.user._id).then((user) => {
|
|
upload(req, res, function(err) {
|
|
if (err) {
|
|
//console.log('Error in Saving Entry: ' + err);
|
|
res.json({message: err});
|
|
throw err;
|
|
} else {
|
|
if (rightsManager.check(user.role, OBJECT_PROJECT_FOLIO, TASK_CREATE)) {
|
|
var project = new Project(req.body);
|
|
project.owner = user._id;
|
|
project.user = [];
|
|
project.comments = [];
|
|
project.tasks = [];
|
|
project.created = new Date().getTime();
|
|
project.edited = new Date().getTime();
|
|
if (req.files != "") {
|
|
project.images = req.files;
|
|
} else {
|
|
console.log("NOTHING TO SAVE");
|
|
}
|
|
project.save().then((project) => {
|
|
res.json({message: "new client project added"});
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
})
|
|
} else {
|
|
res.json({message: "Nah. You can't do that. Talk to the admin, sport."});
|
|
}
|
|
}
|
|
});
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
})
|
|
});
|
|
/*
|
|
|
|
Get Client Project List
|
|
|
|
*/
|
|
router.get('/', function(req, res, next) {
|
|
if (!req.user)
|
|
return res.json({message: "You need to be logged in, champ."})
|
|
User.findById(req.user._id).then((user) => {
|
|
if ( rightsManager.check(user.role, OBJECT_POST, TASK_READ )) {
|
|
Project.find({}).then((projects) => {
|
|
res.json(projects);
|
|
}).then((users) => {
|
|
//res.json({message: "got user list"});
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
});
|
|
} else {
|
|
res.json({message: "Nah. You can't do that. Talk to the admin, sport."});
|
|
}
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
})
|
|
});
|
|
/*
|
|
|
|
Get Client Project by ID
|
|
|
|
*/
|
|
router.get('/:id', function(req, res, next) {
|
|
if (!req.user)
|
|
return res.json({message: "You need to be logged in, champ."});
|
|
User.findById(req.user._id).then((user) => {
|
|
if (RightsManager.check(user.role, [RightsManager.OBJECT_PROJECT_CLIENT], RightsManager.TASK_READ)) {
|
|
Project.findById(req.params.id).then((project) => {
|
|
res.json(project);
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
});
|
|
}
|
|
})
|
|
});
|
|
/*
|
|
|
|
Update Client Project by ID
|
|
|
|
*/
|
|
router.post('/update/:id', function(req, res, next) {
|
|
if (!req.user)
|
|
return res.json({message: "You need to be logged in, champ."});
|
|
User.findById(req.user._id).then((user) => {
|
|
if ( rightsManager.check(user.role, OBJECT_POST, TASK_UPDATE) ) {
|
|
upload(req, res, function(err) {
|
|
if (err) {
|
|
//console.log('Error in Saving Entry: ' + err);
|
|
res.json({message: err});
|
|
throw err;
|
|
} else {
|
|
Project.findByIdAndUpdate(req.params.id, req.body).then((project) => {
|
|
if (req.files != "") {
|
|
project.images = req.files;
|
|
} else {
|
|
console.log("NOTHING TO SAVE");
|
|
}
|
|
project.edited = new Date().getTime();
|
|
project.save().then((saved) => {
|
|
res.json({message: "project updated"});
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
})
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
})
|
|
}
|
|
});
|
|
} else {
|
|
res.json({message: "Nah. You can't do that. Talk to the admin, sport."});
|
|
}
|
|
});
|
|
});
|
|
/*
|
|
|
|
Delete Client Project by ID
|
|
|
|
*/
|
|
router.delete('/:id', function(req, res, next) {
|
|
if (!req.user)
|
|
return res.json({message: "users only, yo. you're not that"});
|
|
User.findById(req.user._id).then((user) => {
|
|
if ( rightsManager.check(user.role, OBJECT_POST, TASK_DELETE) ) {
|
|
Project.findByIdAndRemove(req.params.id).then((project) => {
|
|
res.json({message: 'project has been removed'});
|
|
}).catch((err) => {
|
|
console.log(err);
|
|
})
|
|
} else {
|
|
res.json({message: "Nah. You can't do that. Talk to the admin, sport."});
|
|
}
|
|
});
|
|
});
|
|
module.exports = router;
|