diff --git a/src/routes/api/v1/aeronefs.js b/src/routes/api/v1/aeronefs.js deleted file mode 100644 index 7db47c7..0000000 --- a/src/routes/api/v1/aeronefs.js +++ /dev/null @@ -1,143 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - Jump = mongoose.model('Jump'), - User = mongoose.model('User'); -const auth = require('../../../middlewares/auth'), - queries = require('../../queries'); - - -router.get('/allByImat', auth.required, function (req, res, next) { - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let query = queries.getAeronefsByImatQuery(user._id.toString()); - Promise.all([ - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - //Aeronef.count(query) - ]).then(function (results) { - let aeronefs = results[0]; - //let aeronefsCount = results[1]; - return res.json({ - aeronefs: aeronefs.map(function (data) { - return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count }; - }), - aeronefsCount: aeronefs.length - }); - /* - return res.json({ - aeronefs: aeronefs.map(function (aeronef) { - return aeronef.toJSONFor(user); - }), - aeronefsCount: aeronefsCount - }); - */ - }).catch(next); - }).catch(next); -}); - -router.get('/allByImatByYear', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 50; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getAeronefsByImatByYearQuery(user._id.toString()); - - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let aeronefs = result.map(function (data) { - return { aeronef: data._id.aeronef, imat: data._id.imat, year: data._id.year, count: data.count }; - }); - return res.json({ - aeronefs: aeronefs, - aeronefsCount: aeronefs.length - }); - }).catch(next); - }).catch(next); - /* - let limit = 50; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = [ - { - '$match': { - '$expr': { - '$eq': [ '$author' , { '$toObjectId': user._id.toString() } ] - } - } - }, { - '$project': { - '_id': 0, - 'aeronef': 1, - 'imat': 1, - 'year': { - '$year': '$date' - } - } - }, { - '$group': { - '_id': { - 'aeronef': '$aeronef', - 'imat': '$imat', - 'year': '$year' - }, - 'count': { - '$sum': 1 - } - } - }, { - '$sort': { - '_id': 1 - } - } - ]; - Promise.all([ - req.payload ? User.findById(req.payload.id) : null, - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - ]).then(function (results) { - let user = results[0]; - let aeronefs = results[1]; - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - return res.json({ - aeronefs: aeronefs, - aeronefsCount: aeronefs.length - }); - }).catch(next); - */ - -}); - -module.exports = router; diff --git a/src/routes/api/v1/applications.js b/src/routes/api/v1/applications.js deleted file mode 100644 index fdf32fc..0000000 --- a/src/routes/api/v1/applications.js +++ /dev/null @@ -1,173 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - Application = mongoose.model('Application'), - User = mongoose.model('User'); -const auth = require('../../../middlewares/auth'), - mailer = require('@sendgrid/mail'); - -mailer.setApiKey(process.env.SENDGRID_API_KEY); - -// Preload application objects on routes with ':application' -router.param('application', function (req, res, next, slug) { - Application.findOne({ slug: slug }) - .populate('author') - .then(function (application) { - if (!application) { - return res.sendStatus(404); - } - req.application = application; - return next(); - }).catch(next); -}); - -/** - * return all applications - */ -router.get('/', auth.required, function (req, res, next) { - let query = {}; - let limit = 25; - let offset = 0; - - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - if (typeof req.query.apikey !== 'undefined') { - query.apikey = req.query.apikey; - } - if (typeof req.query.maskedkey !== 'undefined') { - query.maskedkey = req.query.maskedkey; - } - - Promise.all([ - req.query.author ? User.findOne({ username: req.query.author }) : null - ]).then(function (author) { - if (author[0]) { - query.author = author[0]._id; - } - return Promise.all([ - Application.find(query) - .skip(Number(offset)) - .limit(Number(limit)) - .sort({ createdAt: 'desc' }) - .populate('author') - .exec(), - Application.count(query).exec(), - req.payload ? User.findById(req.payload.id) : null - ]).then(function (results) { - let applications = results[0]; - let applicationsCount = results[1]; - let user = results[2]; - - return res.json({ - applications: applications.map(function (application) { - return application.toJSONFor(user); - }), - applicationsCount: applicationsCount - }); - }); - }).catch(next); -}); - -/** - * save an application - */ -router.post('/', auth.required, function (req, res, next) { - Promise.all([ - User.findById(req.payload.id), - auth.generateAPIKey() - ]).then(function (results) { - let user = results[0]; - let keys = results[1]; - if (!user) { - return res.sendStatus(401).json({message: "Unauthorized - You are not allowed to access this resource."}); - } - let application = new Application(req.body.application); - application.author = user; - application.apikey = keys.encrypted; - application.maskedkey = keys.masked; - return application.save().then(function () { - let msg = { - to: user.email, - from: process.env.SENDGRID_FROM_MAIL, - subject: `Api-Key ${application.title}`, - text: `Votre Api-Key: ${keys.key}\nAttention, cette Api-Key doit être conservée et ne sera plus affichée.\n\n${application.title}\n${application.description}`, - html: `

${application.title}

-

- Votre Api-Key: ${keys.key}
- Attention, cette Api-Key doit être conservée et ne sera plus affichée. -

-
-

${application.description}

` - }; - mailer.send(msg).then(() => { - return res.json({ application: application.toJSONFor(user) }); - }) - .catch(err => { - res.sendStatus(500).json({message: "A SendGrid error occured while sending an email", err: err}); - }); - }); - }).catch(next); -}); - -/** - * return an application - */ -router.get('/:application', auth.required, function (req, res, next) { - Promise.all([ - req.payload ? User.findById(req.payload.id) : null, - req.application.populate('author') - ]).then(function (results) { - let user = results[0]; - return res.json({ application: req.application.toJSONFor(user) }); - }).catch(next); -}); - -/** - * update an application - */ -router.put('/:application', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (req.application.author._id.toString() === req.payload.id.toString()) { - if (typeof req.body.application.title !== 'undefined') { - req.application.title = req.body.application.title; - } - if (typeof req.body.application.description !== 'undefined') { - req.application.description = req.body.application.description; - } - if (typeof req.body.application.apikey !== 'undefined') { - req.application.apikey = req.body.application.apikey; - } - if (typeof req.body.application.maskedkey !== 'undefined') { - req.application.maskedkey = req.body.application.maskedkey; - } - req.application.save().then(function (application) { - return res.json({ application: application.toJSONFor(user) }); - }).catch(next); - } else { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - }); -}); - -/** - * delete an application - */ -router.delete('/:application', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (user.role == 'Admin' || req.application.author._id.toString() === req.payload.id.toString()) { - return req.application.remove().then(function () { - return res.json({ deleted: true }); - }); - } else { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - }).catch(next); -}); - -module.exports = router; diff --git a/src/routes/api/v1/canopies.js b/src/routes/api/v1/canopies.js deleted file mode 100644 index e8c04cd..0000000 --- a/src/routes/api/v1/canopies.js +++ /dev/null @@ -1,166 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - Jump = mongoose.model('Jump'), - User = mongoose.model('User'); -const auth = require('../../../middlewares/auth'), - queries = require('../../queries'); - -router.get('/', auth.required, function (req, res, next) { - let query = {}; - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - if (typeof req.query.slug !== 'undefined') { - query.slug = req.query.slug; - } - - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (user.role == 'Admin') { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - Jump.find(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let canopies = result; - return res.json({ - canopies: canopies, - canopiesCount: canopies.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allBySize', auth.required, function (req, res, next) { - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let query = queries.getCanopiesBySizeQuery(user._id.toString()); - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let canopies = result.map(function (data) { - return { taille: data._id.taille, count: data.count }; - }); - return res.json({ - canopies: canopies, - canopiesCount: canopies.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allBySizeByYear', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getCanopiesBySizeByYearQuery(user._id.toString()); - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let canopies = result.map(function (data) { - return { taille: data._id.taille, year: data._id.year, count: data.count }; - }); - //console.log(dropzones); - return res.json({ - canopies: canopies, - canopiesCount: canopies.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allBySizeByModel', auth.required, function (req, res, next) { - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let query = queries.getCanopiesBySizeByModelQuery(user._id.toString()); - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let canopies = result.map(function (data) { - return { taille: data._id.taille, voile: data._id.voile, count: data.count }; - }); - return res.json({ - canopies: canopies, - canopiesCount: canopies.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allBySizeByModelByYear', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getCanopiesBySizeByModelByYearQuery(user._id.toString()); - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let canopies = result.map(function (data) { - return { taille: data._id.taille, voile: data._id.voile, year: data._id.year, count: data.count }; - }); - return res.json({ - canopies: canopies, - canopiesCount: canopies.length - }); - }).catch(next); - }).catch(next); -}); - -module.exports = router; diff --git a/src/routes/api/v1/dropzones.js b/src/routes/api/v1/dropzones.js deleted file mode 100644 index f87fb02..0000000 --- a/src/routes/api/v1/dropzones.js +++ /dev/null @@ -1,69 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - Jump = mongoose.model('Jump'), - User = mongoose.model('User'); -const auth = require('../../../middlewares/auth'), - queries = require('../../queries'); - - -router.get('/allByOaci', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getDropZonesByOaciQuery(user._id.toString()); - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let dropzones = result.map(function (data) { - return { lieu: data._id.lieu, oaci: data._id.oaci, count: data.count }; - }); - return res.json({ - dropzones: dropzones, - dropzonesCount: dropzones.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allByOaciByYear', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getDropZonesByOaciByYearQuery(user._id.toString()); - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let dropzones = result.map(function (data) { - return { lieu: data._id.lieu, oaci: data._id.oaci, year: data._id.year, count: data.count }; - }); - return res.json({ - dropzones: dropzones, - dropzonesCount: dropzones.length - }); - }).catch(next); - }).catch(next); -}); - -module.exports = router; diff --git a/src/routes/api/v1/index.js b/src/routes/api/v1/index.js deleted file mode 100644 index 3c904f3..0000000 --- a/src/routes/api/v1/index.js +++ /dev/null @@ -1,25 +0,0 @@ -var routes = require('express').Router(); - -routes.use('/applications', require('./applications')); -routes.use('/aeronefs', require('./aeronefs')); -routes.use('/canopies', require('./canopies')); -routes.use('/dropzones', require('./dropzones')); -routes.use('/jumps', require('./jumps')); -routes.use('/pages', require('./pages')); -routes.use('/profiles', require('./profiles')); -routes.use('/qcm', require('./qcm')); -//routes.use('/user', require('./users')); - -routes.use(function (err, req, res, next) { - if (err.name === 'ValidationError') { - return res.status(422).json({ - errors: Object.keys(err.errors).reduce(function (errors, key) { - errors[key] = err.errors[key].message; - return errors; - }, {}) - }); - } - return next(err); -}); - -module.exports = routes; \ No newline at end of file diff --git a/src/routes/api/v1/jumps.js b/src/routes/api/v1/jumps.js deleted file mode 100644 index bb9d480..0000000 --- a/src/routes/api/v1/jumps.js +++ /dev/null @@ -1,622 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - Jump = mongoose.model('Jump'), - JumpFile = mongoose.model('JumpFile'), - User = mongoose.model('User'), - X2DataLog = mongoose.model('X2DataLog'); -const auth = require('../../../middlewares/auth'), - chalk = require('chalk'), - queries = require('../../queries'); -const DateUtilities = require('../../../utils/dateUtilities'); -const utils = require('../../../utils'); - -// Preload jump objects on routes with ':jump' -router.param('jump', function (req, res, next, slug) { - Jump.findOne({ slug: slug }) - .populate('author') - .populate('files') - .populate('x2data') - .then(function (jump) { - if (!jump) { - return res.sendStatus(404); - } - req.jump = jump; - return next(); - }).catch(next); -}); - -/** - * return all jumps - */ -router.get('/', auth.required, function (req, res, next) { - let query = {}; - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - if (typeof req.query.title !== 'undefined') { - const rgx = new RegExp(`.*${req.query.title}.*`); - query = { - $or: [ - { title: { $regex: rgx, $options: "i" } }, - { slug: { $regex: rgx, $options: "i" } }, - ], - } - } - if (typeof req.query.numeroRangeStart !== 'undefined' && typeof req.query.numeroRangeEnd !== 'undefined') { - query.numero = { - $gte: req.query.numeroRangeStart, - $lte: req.query.numeroRangeEnd - }; - } - if (typeof req.query.tailleRangeStart !== 'undefined' && typeof req.query.tailleRangeEnd !== 'undefined') { - query.taille = { - $gte: req.query.tailleRangeStart, - $lte: req.query.tailleRangeEnd - }; - } - if (typeof req.query.participantsRangeStart !== 'undefined' && typeof req.query.participantsRangeEnd !== 'undefined') { - query.participants = { - $gte: req.query.participantsRangeStart, - $lte: req.query.participantsRangeEnd - }; - } - if (typeof req.query.hauteurRangeStart !== 'undefined' && typeof req.query.hauteurRangeEnd !== 'undefined') { - query.hauteur = { - $gte: req.query.hauteurRangeStart, - $lte: req.query.hauteurRangeEnd - }; - } - if (typeof req.query.yearRangeStart !== 'undefined' && typeof req.query.yearRangeEnd !== 'undefined') { - query.date = { - $gte: new Date(`${req.query.yearRangeStart}-01-01 00:00:00`), - $lte: new Date(`${req.query.yearRangeEnd}-12-31 23:59:59`) - }; - } - if (typeof req.query.dateRangeStart !== 'undefined' && typeof req.query.dateRangeEnd !== 'undefined') { - query.date = { - $gte: new Date(`${req.query.dateRangeStart} 00:00:00`), - $lte: new Date(`${req.query.dateRangeEnd} 23:59:59`) - }; - } - - Promise.all([ - req.query.author ? User.findOne({ username: req.query.author }) : null, - req.query.favorited ? User.findOne({ username: req.query.favorited }) : null - ]).then(function (users) { - let author = users[0]; - - if (author) { - query.author = author._id; - } - - Promise.all([ - Jump.find(query) - .skip(Number(offset)) - .limit(Number(limit)) - .sort({ numero: 'desc' }) - .populate('author') - .populate('files') - .populate('x2data') - .exec(), - Jump.count(query).exec(), - req.payload ? User.findById(req.payload.id) : null - ]).then(function (results) { - let jumps = results[0]; - let jumpsCount = results[1]; - let user = results[2]; - /* - Promise.all( - jumps.map(jump => { - if (jump.files[0] !== undefined && jump.files[0].type !== 'kml') { - console.log( chalk.green(`Fichier ${jump.files[0].type}`)) - //console.log( chalk.green(`Suppression du fichier ${jump.files[2]._id}`)) - //return jump.removeFile(jump.files[2]._id); - } - return; - }) - ).then(function () { - return res.json({ - jumps: jumps.map(function (jump) { - return jump.toJSONFor(user); - }), - jumpsCount: jumpsCount - }); - }); - */ - return res.json({ - jumps: jumps.map(function (jump) { - return jump.toJSONFor(user); - }), - jumpsCount: jumpsCount - }); - }); - }).catch(next); -}); - -router.get('/allByCategorie', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 120; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getJumpsByCategoryQuery(user._id.toString()); - - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let jumps = result.map(function (data) { - return { categorie: data._id.categorie, count: data.count }; - }); - return res.json({ - jumps: jumps, - jumpsCount: jumps.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allByDate', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 120; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getJumpsByDateQuery(user._id.toString()); - - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let jumps = result.map(function (data) { - return { year: data._id.year, month: data._id.month, count: data.count }; - }); - return res.json({ - jumps: jumps, - jumpsCount: jumps.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allByDay', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let query = {}; - let limit = 50; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - if (typeof req.query.dateRangeStart !== 'undefined' && typeof req.query.dateRangeEnd !== 'undefined') { - query = queries.getJumpsByDayQuery( - user._id.toString(), - req.query.dateRangeStart, - req.query.dateRangeEnd - ); - } else { - query = queries.getJumpsByDayQuery(user._id.toString()); - } - - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let days = result.map(function (data) { - return { jumps: data.jumps, count: data.count }; - }); - return res.json({ - days: days, - daysCount: days.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/allByModule', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 120; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - let query = queries.getJumpsByModuleQuery(user._id.toString()); - - Jump.aggregate(query) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - .then(function (result) { - let jumps = result.map(function (data) { - return { categorie: data._id.categorie, module: data._id.module, count: data.count }; - }); - return res.json({ - jumps: jumps, - jumpsCount: jumps.length - }); - }).catch(next); - }).catch(next); -}); - -/** - * return a jump from SkydiverId API - */ -router.get('/allFromSkydiverIdApi', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - utils.fetchSkydiverIdApi('jumps', req.query).then(result => { - if (result.errors === undefined) { - console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.green(`Réception des sauts SkydiverId`)); - } else { - console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`Une erreur ${result.errors.code} '${result.errors.type}' est survenue lors de la réception des sauts SkydiverId : ${result.errors.name} ${result.errors.message}`)); - } - return res.json({ - jumps: result, - jumpsCount: result.items.length - }); - }).catch(next); - }).catch(next); -}); - -router.get('/feed', auth.required, function (req, res, next) { - let limit = 25; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let query = { author: { $in: user.following } }; - Promise.all([ - Jump.find(query) - .skip(Number(offset)) - .limit(Number(limit)) - .populate('author') - .populate('files') - .populate('x2data') - .exec(), - Jump.count(query) - ]).then(function (results) { - let jumps = results[0]; - let jumpsCount = results[1]; - return res.json({ - jumps: jumps.map(function (jump) { - return jump.toJSONFor(user); - }), - jumpsCount: jumpsCount - }); - }).catch(next); - }); -}); - -/** - * return last jump - */ -router.get('/last', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - /*Jump.findOne({ slug: slug }) - .populate('author') - .then(function (jump) { - if (!jump) { - return res.sendStatus(404); - } - req.jump = jump; - return next(); - }).catch(next);*/ - Jump.find({author: user._id}) - .limit(1) - .sort({ numero: 'desc' }) - .populate('author') - .populate('files') - .populate('x2data') - .exec() - .then(function (jumps) { - if (!jumps || jumps.length === 0) { - return res.status(404).json({ errors: { "Not Found": "aucun saut trouvé" } }); - } - req.lastjump = jumps[0]; - if (req.lastjump.author.username !== req.payload.username) { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - return res.json({ jump: req.lastjump.toJSONFor(user) }); - }).catch(next); - }).catch(next); -}); - -/** - * return a jump - */ -router.get('/:jump', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (req.jump.author._id.toString() !== req.payload.id.toString()) { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - Promise.all([ - Jump.findOne({numero: (req.jump.numero - 1)}).exec(), - Jump.findOne({numero: (req.jump.numero + 1)}).exec(), - ]).then(function (results) { - return res.json({ - jump: req.jump.toJSONFor(user), - prevJump: results[0], - nextJump: results[1] - }); - }).catch(next); - }).catch(next); -}); - -/** - * save a jump - */ -router.post('/', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - //let numero = (results[1][0].numero + 1); - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let jump = new Jump(req.body.jump); - jump.author = user; - //jump.numero = numero; - return jump.save().then(function () { - return res.json({ jump: jump.toJSONFor(user) }); - }); - }).catch(next); -}); - -/** - * save a jump file - */ -router.post('/data/:jump', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (req.jump.author._id.toString() !== req.payload.id.toString()) { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - /* - console.log(req.jump.files); - return res.json({ jump: req.jump.toJSONFor(user) }); - */ - Object.assign(req.body.file, {_id: new mongoose.Types.ObjectId()}); - let file = new JumpFile(req.body.file); - let files = req.jump.files ? req.jump.files : []; - file.author = user; - files.push(file); - return file.save().then(function () { - Object.assign(req.body.data, {_id: new mongoose.Types.ObjectId()}); - let x2data = new X2DataLog(req.body.data); - x2data.author = user; - return x2data.save().then(function () { - req.jump.files = files; - req.jump.x2data = x2data; - Jump.updateOne({_id: req.jump._id}, {files: files, x2data: x2data._id}).then(function () { - return res.json({ jump: req.jump.toJSONFor(user) }); - }).catch(next); - }).catch(next); - }).catch(next); - }).catch(next); -}); - -/** - * save a jump file - */ -router.post('/file/:jump', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (req.jump.author._id.toString() !== req.payload.id.toString()) { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - Object.assign(req.body.file, {_id: new mongoose.Types.ObjectId()}); - let file = new JumpFile(req.body.file); - let files = req.jump.files ? req.jump.files : []; - file.author = user; - files.push(file); - return file.save().then(function () { - Jump.updateOne({_id: req.jump._id}, {files: files}).then(function () { - return res.json({ file: file.toJSONForJump() }); - }).catch(next); - }).catch(next); - }).catch(next); -}); - -/** - * save a jump file - */ -router.post('/kml/:jump', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (req.jump.author._id.toString() !== req.payload.id.toString()) { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - Object.assign(req.body.file, { - _id: new mongoose.Types.ObjectId(), - name: `${req.jump.x2data.name}.kml`, - path: `/Volumes/Storage/Skydive/X2_Kmls/${req.jump.date.getFullYear()}/`, - type: 'kml' - }); - let file = new JumpFile(req.body.file); - let files = req.jump.files ? req.jump.files : []; - file.author = user; - files.push(file); - //console.log(chalk.yellow(`jump/${req.jump.x2data.id}/kml`)); - return res.json({ file: file.toJSONForJump() }); - /* - DateUtilities.fetchSkydiverIdApi(`jump/${req.jump.x2data.id}/kml`, {}).then(result => { - if (result.errors === undefined) { - console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.green(`Réception de l'url du fichier kml SkydiverId`)); - } else { - console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`Une erreur ${result.errors.code} '${result.errors.type}' est survenue lors de la réception de l'url du fichier kml SkydiverId : ${result.errors.name} ${result.errors.message}`)); - } - if (result.url !== undefined) { - console.log(chalk.green(result.url)); - } else { - console.log(chalk.red('result.url is undefined')); - } - return res.json({ file: file.toJSONForJump() }); - }).catch(next); - - - - return file.save().then(function () { - Jump.updateOne({_id: req.jump._id}, {files: files}).then(function () { - DateUtilities.fetchSkydiverIdApi(`jump/${req.jump.x2data.id}/kml`, {}).then(result => { - if (result.errors === undefined) { - console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.green(`Réception de l'url du fichier kml SkydiverId`)); - } else { - console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`Une erreur ${result.errors.code} '${result.errors.type}' est survenue lors de la réception de l'url du fichier kml SkydiverId : ${result.errors.name} ${result.errors.message}`)); - } - if (result.url !== undefined) { - console.log(result.url); - } else { - console.log('result.url is undefined'); - } - return res.json({ file: file.toJSONForJump() }); - }).catch(next); - }).catch(next); - }).catch(next); - */ - }).catch(next); -}); - -/** - * update a jump - */ -router.put('/:jump', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (req.jump.author._id.toString() !== req.payload.id.toString()) { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - if (typeof req.body.jump.date !== 'undefined') { - req.jump.date = req.body.jump.date; - } - if (typeof req.body.jump.numero !== 'undefined') { - req.jump.numero = req.body.jump.numero; - } - if (typeof req.body.jump.lieu !== 'undefined') { - req.jump.lieu = req.body.jump.lieu; - } - if (typeof req.body.jump.oaci !== 'undefined') { - req.jump.oaci = req.body.jump.oaci; - } - if (typeof req.body.jump.aeronef !== 'undefined') { - req.jump.aeronef = req.body.jump.aeronef; - } - if (typeof req.body.jump.imat !== 'undefined') { - req.jump.imat = req.body.jump.imat; - } - if (typeof req.body.jump.hauteur !== 'undefined') { - req.jump.hauteur = req.body.jump.hauteur; - } - if (typeof req.body.jump.voile !== 'undefined') { - req.jump.voile = req.body.jump.voile; - } - if (typeof req.body.jump.taille !== 'undefined') { - req.jump.taille = req.body.jump.taille; - } - if (typeof req.body.jump.categorie !== 'undefined') { - req.jump.categorie = req.body.jump.categorie; - } - if (typeof req.body.jump.module !== 'undefined') { - req.jump.module = req.body.jump.module; - } - if (typeof req.body.jump.participants !== 'undefined') { - req.jump.participants = req.body.jump.participants; - } - if (typeof req.body.jump.sautants !== 'undefined') { - req.jump.sautants = req.body.jump.sautants; - } - if (typeof req.body.jump.programme !== 'undefined') { - req.jump.programme = req.body.jump.programme; - } - if (typeof req.body.jump.accessoires !== 'undefined') { - req.jump.accessoires = req.body.jump.accessoires; - } - if (typeof req.body.jump.zone !== 'undefined') { - req.jump.zone = req.body.jump.zone; - } - if (typeof req.body.jump.dossier !== 'undefined') { - req.jump.dossier = req.body.jump.dossier; - } - if (typeof req.body.jump.video !== 'undefined') { - req.jump.video = req.body.jump.video; - } - - return req.jump.save().then(function (jump) { - return res.json({ jump: jump.toJSONFor(user) }); - }); - }).catch(next); -}); - -/** - * delete a jump - */ -router.delete('/:jump', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (req.jump.author._id.toString() === req.payload.id.toString()) { - return req.jump.remove().then(function () { - return res.json({ deleted: true }); - }); - } else { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - }).catch(next); -}); - -module.exports = router; diff --git a/src/routes/api/v1/pages.js b/src/routes/api/v1/pages.js deleted file mode 100644 index f68d385..0000000 --- a/src/routes/api/v1/pages.js +++ /dev/null @@ -1,284 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - Jump = mongoose.model('Jump'), - User = mongoose.model('User'); -const auth = require('../../../middlewares/auth'), - queries = require('../../queries'); - -router.get('/aeronefs', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 120; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - Promise.all([ - Jump.find({}) - .limit(1) - .skip(0) - .sort({ numero: 'desc' }) - .populate('author') - .populate('files') - .populate('x2data') - .exec(), - Jump.aggregate(queries.getAeronefsByImatQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getAeronefsByImatByYearQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - ]).then(function (results) { - if (results[0].length) { - let lastjump = results[0][0].toJSONFor(user); - let aeronefsByImat = results[1].map(function (data) { - return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count }; - }); - let aeronefsByImatByYear = results[2].map(function (data) { - return { - aeronef: data._id.aeronef, - imat: data._id.imat, - year: data._id.year, - count: data.count - }; - }); - return res.json({ - aeronefsByImat: aeronefsByImat, - aeronefsByImatByYear: aeronefsByImatByYear, - lastjump: lastjump - }); - } else { - return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } }); - } - }).catch(next); - }).catch(next); -}); - -router.get('/canopies', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 120; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - Promise.all([ - Jump.find({}) - .limit(1) - .skip(0) - .sort({ numero: 'desc' }) - .populate('author') - .populate('files') - .populate('x2data') - .exec(), - Jump.aggregate(queries.getCanopiesBySizeQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getCanopiesBySizeByYearQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getCanopiesBySizeByModelQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getCanopiesBySizeByModelByYearQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - ]).then(function (results) { - if (results[0].length) { - let lastjump = results[0][0].toJSONFor(user); - let canopiesBySize = results[1].map(function (data) { - return { taille: data._id.taille, count: data.count }; - }); - let canopiesBySizeByYear = results[2].map(function (data) { - return { - taille: data._id.taille, - year: data._id.year, - count: data.count - }; - }); - let canopiesBySizeByModel = results[3].map(function (data) { - return { - taille: data._id.taille, - voile: data._id.voile, - count: data.count - }; - }); - let canopiesBySizeByModelByYear = results[4].map(function (data) { - return { - taille: data._id.taille, - voile: data._id.voile, - year: data._id.year, - count: data.count - }; - }); - return res.json({ - canopiesBySize: canopiesBySize, - canopiesBySizeByYear: canopiesBySizeByYear, - canopiesBySizeByModel: canopiesBySizeByModel, - canopiesBySizeByModelByYear: canopiesBySizeByModelByYear, - lastjump: lastjump - }); - } else { - return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } }); - } - }).catch(next); - }).catch(next); -}); - -router.get('/dropzones', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 120; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - Promise.all([ - Jump.find({}) - .limit(1) - .skip(0) - .sort({ numero: 'desc' }) - .populate('author') - .populate('files') - .populate('x2data') - .exec(), - Jump.aggregate(queries.getDropZonesByOaciQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getDropZonesByOaciByYearQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - ]).then(function (results) { - if (results[0].length) { - let lastjump = results[0][0].toJSONFor(user); - let dropZonesByOaci = results[1].map(function (data) { - return { lieu: data._id.lieu, oaci: data._id.oaci, count: data.count }; - }); - let dropZonesByOaciByYear = results[2].map(function (data) { - return { - lieu: data._id.lieu, - oaci: data._id.oaci, - year: data._id.year, - count: data.count - }; - }); - return res.json({ - dropZonesByOaci: dropZonesByOaci, - dropZonesByOaciByYear: dropZonesByOaciByYear, - lastjump: lastjump - }); - } else { - return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } }); - } - }).catch(next); - }).catch(next); -}); - -router.get('/jumps', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - let limit = 120; - let offset = 0; - if (typeof req.query.limit !== 'undefined') { - limit = req.query.limit; - } - if (typeof req.query.offset !== 'undefined') { - offset = req.query.offset; - } - Promise.all([ - Jump.find({}) - .limit(1) - .skip(0) - .sort({ numero: 'desc' }) - .populate('author') - .populate('files') - .populate('x2data') - .exec(), - Jump.aggregate(queries.getJumpByYearsQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getJumpsByCategoryQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getJumpsByModuleQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getJumpsByDateQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec(), - Jump.aggregate(queries.getJumpsByModuleByDateQuery(user._id.toString())) - .skip(Number(offset)) - .limit(Number(limit)) - .exec() - //utils.fetchSkydiverIdApi('jumps') - ]).then(function (results) { - if (results[0].length) { - let lastjump = results[0][0].toJSONFor(user); - let jumpsByYears = results[1].map(function (data) { - return { year: data._id.year, count: data.count }; - }); - let jumpsByCategory = results[2].map(function (data) { - return { categorie: data._id.categorie, count: data.count }; - }); - let jumpsByModule = results[3].map(function (data) { - return { categorie: data._id.categorie, module: data._id.module, count: data.count }; - }); - let jumpsByDate = results[4].map(function (data) { - return { year: data._id.year, month: data._id.month, count: data.count }; - }); - let jumpsByDateByModule = results[5].map(function (data) { - return { - categorie: data._id.categorie, - module: data._id.module, - year: data._id.year, - month: data._id.month, - count: data.count - }; - }); - //let jumpsFromSkydiverIdApi = results[6]; - return res.json({ - jumpsByCategory: jumpsByCategory, - jumpsByDate: jumpsByDate, - jumpsByDateByModule: jumpsByDateByModule, - jumpsByModule: jumpsByModule, - jumpsByYears: jumpsByYears, - //jumpsFromSkydiverIdApi: jumpsFromSkydiverIdApi, - lastjump: lastjump - }); - } else { - return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } }); - } - }).catch(next); - }).catch(next); -}); - -module.exports = router; diff --git a/src/routes/api/v1/profiles.js b/src/routes/api/v1/profiles.js deleted file mode 100644 index 2bc6ba6..0000000 --- a/src/routes/api/v1/profiles.js +++ /dev/null @@ -1,57 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - User = mongoose.model('User'); -const auth = require('../../../middlewares/auth'); - -// Preload user profile on routes with ':username' -router.param('username', function (req, res, next, username) { - User.findOne({ username: username }).then(function (user) { - if (!user) { - return res.sendStatus(404); - } - req.profile = user; - - return next(); - }).catch(next); -}); - -router.get('/:username', auth.optional, function (req, res) { - if (req.payload) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.json({ profile: req.profile.toProfileJSONFor(false) }); - } - return res.json({ profile: req.profile.toProfileJSONFor(user) }); - }); - } else { - return res.json({ profile: req.profile.toProfileJSONFor(false) }); - } -}); - -router.post('/:username/follow', auth.required, function (req, res, next) { - let profileId = req.profile._id; - - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - return user.follow(profileId).then(function () { - return res.json({ profile: req.profile.toProfileJSONFor(user) }); - }); - }).catch(next); -}); - -router.delete('/:username/follow', auth.required, function (req, res, next) { - let profileId = req.profile._id; - - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - return user.unfollow(profileId).then(function () { - return res.json({ profile: req.profile.toProfileJSONFor(user) }); - }); - }).catch(next); -}); - -module.exports = router; diff --git a/src/routes/api/v1/qcm.js b/src/routes/api/v1/qcm.js deleted file mode 100644 index 9a80fc8..0000000 --- a/src/routes/api/v1/qcm.js +++ /dev/null @@ -1,157 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - Qcm = mongoose.model('Qcm'), - QcmCategory = mongoose.model('QcmCategory'), - QcmQuestion = mongoose.model('QcmQuestion'), - QcmChoice = mongoose.model('QcmChoice'), - User = mongoose.model('User'); -const auth = require('../../../middlewares/auth'); - -// Preload qcm objects on routes with ':type' -router.param('type', function (req, res, next, type) { - Qcm.findOne({ name: type }) - .populate('categories') - .then(qcm => { - if (!qcm) { - return res.status(404).json({ errors: { "Not Found": "Le QCM est introuvable ou inexistant." } }); - } - req.qcm = qcm; - Promise.all( - req.qcm.categories.map(category => { - return category.populate('questions').then(() => { - return Promise.all( - category.questions.map(question => question.populate('choices')) - ).then(() => { - return category; - }).catch(next); - }); - }) - ).then(() => { - return next(); - }).catch(next); - }).catch(next); -}); - -/** - * return all qcm - */ -router.get('/', auth.required, function (req, res, next) { - Promise.all([ - req.payload ? User.findById(req.payload.id) : null - ]).then(function (results) { - let user = results[0]; - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - return res.json({ qcm: [] }); - }).catch(next); -}); - -/** - * return a qcm - */ -router.get('/type/:type', auth.required, function (req, res, next) { - Promise.all([ - req.payload ? User.findById(req.payload.id) : null - ]).then(function (results) { - let user = results[0]; - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - return res.json({ qcm: req.qcm.toJSONFor() }); - }).catch(next); -}); - -/** - * save an array of qcm question choice - */ -router.post('/choices/', auth.required, function (req, res, next) { - Promise.all([ - req.payload ? User.findById(req.payload.id) : null, - QcmQuestion - .findOne({num: req.body.question.num}) - .populate('choices') - .exec() - ]).then(async function (results) { - const user = results[0]; - //let numero = (results[1][0].numero + 1); - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (user.role !== 'Admin') { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - const question = results[1]; - if (!question) { - return res.status(422).json({ errors: { question: "question introuvable" } }); - } - let choices = []; - Promise.all( - req.body.question.choices.map(data => { - const choiceId = new mongoose.Types.ObjectId(); - const choice = new QcmChoice({ _id: choiceId, index: data.index, libelle: data.libelle, correct: data.correct}); - choices.push(choiceId); - return choice.save(); - }) - ).then(function () { - question.choices = [...choices]; - question.save().then(function () { - QcmQuestion - .findOne({num: req.body.question.num}) - .populate('choices') - .exec() - .then(function (question) { - return res.json({ question: question.toJSONFor() }); - }).catch(next); - }).catch(next); - }).catch(next); - }).catch(next); -}); - -/** - * save an array of qcm category questions - */ -router.post('/questions/', auth.required, function (req, res, next) { - Promise.all([ - req.payload ? User.findById(req.payload.id) : null, - QcmCategory - .findOne({num: req.body.category.num}) - .populate('questions') - .exec() - ]).then(async function (results) { - const user = results[0]; - //let numero = (results[1][0].numero + 1); - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (user.role !== 'Admin') { - return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } }); - } - const category = results[1]; - if (!category) { - return res.status(422).json({ errors: { category: "catégorie introuvable" } }); - } - let questions = []; - Promise.all( - req.body.category.questions.map(data => { - const questionId = new mongoose.Types.ObjectId(); - const question = new QcmQuestion({ _id: questionId, num: data.num, libelle: data.libelle, choices: []}); - questions.push(questionId); - return question.save(); - }) - ).then(function () { - category.questions = [...questions]; - category.save().then(function () { - QcmCategory - .findOne({num: req.body.category.num}) - .populate('questions') - .exec() - .then(function (category) { - return res.json({ category: category.toJSONFor() }); - }).catch(next); - }).catch(next); - }).catch(next); - }).catch(next); -}); - -module.exports = router; \ No newline at end of file diff --git a/src/routes/api/v1/users.js b/src/routes/api/v1/users.js deleted file mode 100644 index d14405d..0000000 --- a/src/routes/api/v1/users.js +++ /dev/null @@ -1,125 +0,0 @@ -var router = require('express').Router(), - mongoose = require('mongoose'), - User = mongoose.model('User'); -const passport = require('passport'), - auth = require('../../auth'); - -router.get('/user', auth.required, function (req, res, next) { - //console.log(req.payload); - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - return res.json({ user: user.toAuthJSON() }); - }).catch(next); -}); - -router.put('/user', auth.required, function (req, res, next) { - User.findById(req.payload.id).then(function (user) { - if (!user) { - return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); - } - if (typeof req.body.user.username !== 'undefined') { - user.username = req.body.user.username; - } - if (typeof req.body.user.email !== 'undefined') { - user.email = req.body.user.email; - } - if (typeof req.body.user.firstname !== 'undefined') { - user.firstname = req.body.user.firstname; - } - if (typeof req.body.user.lastname !== 'undefined') { - user.lastname = req.body.user.lastname; - } - if (typeof req.body.user.phone !== 'undefined') { - user.phone = req.body.user.phone; - } - if (typeof req.body.user.licence !== 'undefined') { - user.licence = req.body.user.licence; - } - if (typeof req.body.user.poids !== 'undefined') { - user.poids = req.body.user.poids; - } - if (typeof req.body.user.image !== 'undefined') { - user.image = req.body.user.image; - } - if (typeof req.body.user.bg_image !== 'undefined') { - user.bg_image = req.body.user.bg_image; - } - if (typeof req.body.user.password !== 'undefined') { - user.setPassword(req.body.user.password); - } - if (typeof req.body.user.role !== 'undefined') { - user.role = req.body.user.role; - } - - return user.save().then(function () { - return res.json({ user: user.toAuthJSON() }); - }); - }).catch(next); -}); - -router.post('/users/login', function (req, res, next) { - if (!req.body.user.email) { - return res.status(422).json({ errors: { email: "email can't be blank" } }); - } - if (!req.body.user.password) { - return res.status(422).json({ errors: { password: " password can't be blank" } }); - } - passport.authenticate('local', { session: false }, function (err, user, info) { - if (err) { - return next(err); - } - if (user) { - user.token = user.generateJWT(); - return res.json({ user: user.toAuthJSON() }); - } else { - return res.status(422).json(info); - } - })(req, res, next); -}); - -router.get('/authenticate', function (req, res, next) { - passport.authenticate('headerapikey', { session: false }, function (err, application, info) { - if (err) { - return res.status(err.status || 500).json({message: "An authentication error occured.", err: err.message}); - //return next(err); - } - if (!application) { - return res.status(401).json({message: "Unauthorized - You are not allowed to access this resource.", err: err, info: info}); - } - if (application.author) { - application.author.token = application.author.generateJWT(); - return res.json({ user: application.author.toAuthJSON(), application: application.toAuthJSON() }); - } else { - return res.status(422).json(info); - } - })(req, res, next); -}); - -router.post('/users', function (req, res, next) { - let user = new User(); - if (typeof req.body.user.username !== 'undefined') { - user.username = req.body.user.username; - } else { - user.username = `${req.body.user.firstname}_${req.body.user.lastname}`; - } - user.email = req.body.user.email; - user.firstname = req.body.user.firstname; - user.lastname = req.body.user.lastname; - user.phone = req.body.user.phone; - if (typeof req.body.user.licence !== 'undefined') { - user.licence = req.body.user.licence; - } - if (typeof req.body.user.poids !== 'undefined') { - user.poids = req.body.user.poids; - } - user.setPassword(req.body.user.password); - user.role = 'User'; - - user.save().then(function () { - return res.json({ user: user.toAuthJSON() }); - }).catch(next); -}); - -module.exports = router; diff --git a/src/routes/api/v2/articles.routes.js b/src/routes/api/v2/articles.routes.js deleted file mode 100644 index 7b670ca..0000000 --- a/src/routes/api/v2/articles.routes.js +++ /dev/null @@ -1,25 +0,0 @@ -const express = require('express'); -const { - articlesFeed, - createArticle, - deleteArticle, - getArticle, - getArticles, - updateArticle, - addFavoriteArticle, - deleteFavoriteArticle -} = require('../../../controllers/articles.controller'); -const auth = require('../../../middlewares/auth'); - -const articleRouter = express.Router(); - -articleRouter.get('/', auth.optional, getArticles); -articleRouter.post('/', auth.required, createArticle); -articleRouter.get('/feed', auth.required, articlesFeed); -articleRouter.get('/:slug', auth.optional, getArticle); -articleRouter.put('/:slug', auth.required, updateArticle); -articleRouter.delete('/:slug', auth.required, deleteArticle); -articleRouter.post('/:slug/favorite', auth.required, addFavoriteArticle); -articleRouter.delete('/:slug/favorite', auth.required, deleteFavoriteArticle); - -module.exports = articleRouter; diff --git a/src/routes/api/v2/comments.routes.js b/src/routes/api/v2/comments.routes.js deleted file mode 100644 index 0c5ca16..0000000 --- a/src/routes/api/v2/comments.routes.js +++ /dev/null @@ -1,10 +0,0 @@ -const express = require('express'); -const { createComment, getAllComments } = require('../../../controllers/comments.controller'); -const auth = require('../../../middlewares/auth'); - -const commentRouter = express.Router(); - -commentRouter.post('/', auth.required, createComment); -commentRouter.get('/', auth.optional, getAllComments); - -module.exports = commentRouter; diff --git a/src/routes/api/v2/herowars.routes.js b/src/routes/api/v2/herowars.routes.js deleted file mode 100644 index e027e70..0000000 --- a/src/routes/api/v2/herowars.routes.js +++ /dev/null @@ -1,13 +0,0 @@ -const express = require('express'); -const { createMember, getAllMembers, getMember, updateMember } = require('../../../controllers/herowars.controller'); -const auth = require('../../../middlewares/auth'); - -const herowarsRouter = express.Router(); - -herowarsRouter.param('member', getMember); -herowarsRouter.get('/:member', auth.required, getMember); -herowarsRouter.get('/', auth.required, getAllMembers); -herowarsRouter.post('/', auth.required, createMember); -herowarsRouter.put('/', auth.required, updateMember); - -module.exports = herowarsRouter; diff --git a/src/routes/api/v2/index.js b/src/routes/api/v2/index.js deleted file mode 100644 index 6d39732..0000000 --- a/src/routes/api/v2/index.js +++ /dev/null @@ -1,24 +0,0 @@ -var routes = require('express').Router(); - -routes.use('/user', require('./user.routes')); -routes.use('/articles', require('./articles.routes')); -routes.use('/comments', require('./comments.routes')); -routes.use('/product', require('./product.routes')); -routes.use('/products', require('./products.routes')); -routes.use('/profiles', require('./profiles.routes')); -routes.use('/tags', require('./tags.routes')); -routes.use('/herowars', require('./herowars.routes')); - -routes.use(function (err, req, res, next) { - if (err.name === 'ValidationError') { - return res.status(422).json({ - errors: Object.keys(err.errors).reduce(function (errors, key) { - errors[key] = err.errors[key].message; - return errors; - }, {}) - }); - } - return next(err); -}); - -module.exports = routes; \ No newline at end of file diff --git a/src/routes/api/v2/product.routes.js b/src/routes/api/v2/product.routes.js deleted file mode 100644 index 997aed2..0000000 --- a/src/routes/api/v2/product.routes.js +++ /dev/null @@ -1,23 +0,0 @@ -const express = require('express'); -const { - getProduct, - getProducts, - createProduct, - addFavoriteProduct, - deleteFavoriteProduct, - deleteProduct, - updateProduct, -} = require('../../../controllers/product.controller'); -const auth = require('../../../middlewares/auth'); - -const productRouter = express.Router(); - -productRouter.get('/', auth.optional, getProducts); -productRouter.post('/', auth.required, createProduct); -productRouter.get('/:slug', auth.optional, getProduct); -productRouter.put('/:slug', auth.required, updateProduct); -productRouter.delete('/:slug', auth.required, deleteProduct); -productRouter.post('/:slug/favorite', auth.required, addFavoriteProduct); -productRouter.delete('/:slug/favorite', auth.required, deleteFavoriteProduct); - -module.exports = productRouter; diff --git a/src/routes/api/v2/products.routes.js b/src/routes/api/v2/products.routes.js deleted file mode 100644 index 7603457..0000000 --- a/src/routes/api/v2/products.routes.js +++ /dev/null @@ -1,15 +0,0 @@ -const express = require('express'); -const { - getProducts, - getProductsByCategory, - productsFeed -} = require('../../../controllers/products.controller'); -const auth = require('../../../middlewares/auth'); - -const productsRouter = express.Router(); - -productsRouter.get('/', auth.optional, getProducts); -productsRouter.get('/feed', auth.required, productsFeed); -productsRouter.get('/:category', auth.optional, getProductsByCategory); - -module.exports = productsRouter; diff --git a/src/routes/api/v2/profiles.routes.js b/src/routes/api/v2/profiles.routes.js deleted file mode 100644 index 17c8346..0000000 --- a/src/routes/api/v2/profiles.routes.js +++ /dev/null @@ -1,12 +0,0 @@ -const express = require('express'); -const {addFollowUser, deleteFollowUser, getParamUsername, getProfile} = require('../../../controllers/profiles.controller'); -const auth = require('../../../middlewares/auth'); - -const profilesRouter = express.Router(); - -profilesRouter.param('username', getParamUsername); -profilesRouter.get('/:username', auth.required, getProfile); -profilesRouter.post('/:username/follow', auth.required, addFollowUser); -profilesRouter.delete('/:username/follow', auth.required, deleteFollowUser); - -module.exports = profilesRouter; \ No newline at end of file diff --git a/src/routes/api/v2/tags.routes.js b/src/routes/api/v2/tags.routes.js deleted file mode 100644 index 4b26e24..0000000 --- a/src/routes/api/v2/tags.routes.js +++ /dev/null @@ -1,11 +0,0 @@ -const express = require('express'); -const { createTag, deleteTag, getAllTags } = require('../../../controllers/tags.controller'); -const auth = require('../../../middlewares/auth'); - -const tagRouter = express.Router(); - -tagRouter.post('/', auth.required, createTag); -tagRouter.get('/', auth.optional, getAllTags); -tagRouter.delete('/:name', auth.required, deleteTag); - -module.exports = tagRouter; diff --git a/src/routes/api/v2/user.routes.js b/src/routes/api/v2/user.routes.js deleted file mode 100644 index 2e3743f..0000000 --- a/src/routes/api/v2/user.routes.js +++ /dev/null @@ -1,22 +0,0 @@ -const express = require('express'); -const { - authenticate, createUser, getUser, loginAsUser, - updateUser, updateUserEmail, updateUserPassword, updateUserRole, updateUserUsername -} = require('../../../controllers/user.controller'); -const auth = require('../../../middlewares/auth'); - -const userRouter = express.Router(); - -userRouter.get('/', auth.required, getUser); -userRouter.put('/', auth.required, updateUser); -userRouter.post('/', auth.optional, createUser); -userRouter.get('/authenticate', auth.optional, authenticate); -userRouter.post('/login', auth.optional, loginAsUser); -//userRouter.post('/register', auth.optional, createUser); -//userRouter.get('/users', auth.required, getAllUsers); -userRouter.put('/update/email', auth.required, updateUserEmail); -userRouter.put('/update/password', auth.required, updateUserPassword); -userRouter.put('/update/role', auth.required, updateUserRole); -userRouter.put('/update/username', auth.required, updateUserUsername); - -module.exports = userRouter; diff --git a/src/routes/api/v3/clans.routes.js b/src/routes/api/v3/clans.routes.js deleted file mode 100644 index eb7b35f..0000000 --- a/src/routes/api/v3/clans.routes.js +++ /dev/null @@ -1,14 +0,0 @@ -const express = require('express'); -const { createClan, deleteClan, getAllClans, getClan, updateClan } = require('../../../controllers/clans.controller'); -const auth = require('../../../middlewares/auth'); - -const clanRouter = express.Router(); - -//clanRouter.param('clanId', getClan); -clanRouter.get('/', auth.optional, getAllClans); -clanRouter.post('/', auth.optional, createClan); -clanRouter.get('/:clanId', auth.required, getClan); -clanRouter.put('/:clanId', auth.required, updateClan); -clanRouter.delete('/:clanId', auth.required, deleteClan); - -module.exports = clanRouter; diff --git a/src/routes/api/v3/index.js b/src/routes/api/v3/index.js deleted file mode 100644 index 6e40203..0000000 --- a/src/routes/api/v3/index.js +++ /dev/null @@ -1,18 +0,0 @@ -var routes = require('express').Router(); - -routes.use('/clans', require('./clans.routes')); -routes.use('/members', require('./members.routes')); - -routes.use(function (err, req, res, next) { - if (err.name === 'ValidationError') { - return res.status(422).json({ - errors: Object.keys(err.errors).reduce(function (errors, key) { - errors[key] = err.errors[key].message; - return errors; - }, {}) - }); - } - return next(err); -}); - -module.exports = routes; \ No newline at end of file diff --git a/src/routes/api/v3/members.routes.js b/src/routes/api/v3/members.routes.js deleted file mode 100644 index 0e04f3c..0000000 --- a/src/routes/api/v3/members.routes.js +++ /dev/null @@ -1,14 +0,0 @@ -const express = require('express'); -const { createMember, deleteMember, getAllMembers, getMember, updateMember } = require('../../../controllers/members.controller'); -const auth = require('../../../middlewares/auth'); - -const memberRouter = express.Router(); - -//memberRouter.param('memberId', getMember); -memberRouter.get('/', auth.required, getAllMembers); -memberRouter.post('/', auth.required, createMember); -memberRouter.get('/:memberId', auth.required, getMember); -memberRouter.put('/:memberId', auth.required, updateMember); -memberRouter.delete('/:memberId', auth.required, deleteMember); - -module.exports = memberRouter; diff --git a/src/routes/index.js b/src/routes/index.js index 1cd29c8..77f8a4d 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -1,7 +1,4 @@ var routes = require('express').Router(); routes.use('/api', require('./api')); -//routes.use('/api/v1', require('./api/v1')); -//routes.use('/api/v2', require('./api/v2')); -//routes.use('/api/v3', require('./api/v3')); module.exports = routes;