Refactoring et ajout de routes Hero Wars

This commit is contained in:
2025-11-27 10:50:17 +01:00
parent c9ce3f343e
commit 60feffd929
47 changed files with 1224 additions and 236 deletions
+18 -17
View File
@@ -1,23 +1,24 @@
var routes = require('express').Router();
//routes.use('/', require('./users'));
//routes.use('/articles', require('./articles'));
//routes.use('/comments', require('./comments'));
//routes.use('/tags', require('./tags'));
routes.use('/profiles', require('./profiles'));
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('/qcm', require('./qcm'));
routes.use('/profiles', require('./v1/profiles'));
routes.use('/applications', require('./v1/applications'));
routes.use('/aeronefs', require('./v1/aeronefs'));
routes.use('/canopies', require('./v1/canopies'));
routes.use('/dropzones', require('./v1/dropzones'));
routes.use('/jumps', require('./v1/jumps'));
routes.use('/pages', require('./v1/pages'));
routes.use('/qcm', require('./v1/qcm'));
routes.use('/user', require('./user.routes'));
routes.use('/articles', require('./articles.routes'));
routes.use('/comment', require('./comment.routes'));
routes.use('/products', require('./products.routes'));
routes.use('/tag', require('./tag.routes'));
routes.use('/user', require('./v2/user.routes'));
routes.use('/articles', require('./v2/articles.routes'));
routes.use('/comment', require('./v2/comment.routes'));
routes.use('/product', require('./v2/product.routes'));
routes.use('/products', require('./v2/products.routes'));
routes.use('/tag', require('./v2/tag.routes'));
routes.use('/clans', require('./v3/clans.routes'));
routes.use('/members', require('./v3/members.routes'));
routes.use(function (err, req, res, next) {
if (err.name === 'ValidationError') {
@@ -2,8 +2,8 @@ var router = require('express').Router(),
mongoose = require('mongoose'),
Jump = mongoose.model('Jump'),
User = mongoose.model('User');
const auth = require('../auth'),
queries = require('../queries');
const auth = require('../../../middlewares/auth'),
queries = require('../../queries');
router.get('/allByImat', auth.required, function (req, res, next) {
@@ -2,7 +2,7 @@ var router = require('express').Router(),
mongoose = require('mongoose'),
Application = mongoose.model('Application'),
User = mongoose.model('User');
const auth = require('../auth'),
const auth = require('../../../middlewares/auth'),
mailer = require('@sendgrid/mail');
mailer.setApiKey(process.env.SENDGRID_API_KEY);
@@ -2,8 +2,8 @@ var router = require('express').Router(),
mongoose = require('mongoose'),
Jump = mongoose.model('Jump'),
User = mongoose.model('User');
const auth = require('../auth'),
queries = require('../queries');
const auth = require('../../../middlewares/auth'),
queries = require('../../queries');
router.get('/', auth.required, function (req, res, next) {
let query = {};
@@ -2,8 +2,8 @@ var router = require('express').Router(),
mongoose = require('mongoose'),
Jump = mongoose.model('Jump'),
User = mongoose.model('User');
const auth = require('../auth'),
queries = require('../queries');
const auth = require('../../../middlewares/auth'),
queries = require('../../queries');
router.get('/allByOaci', auth.required, function (req, res, next) {
+13
View File
@@ -0,0 +1,13 @@
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'));
module.exports = routes;
@@ -4,10 +4,10 @@ var router = require('express').Router(),
JumpFile = mongoose.model('JumpFile'),
User = mongoose.model('User'),
X2DataLog = mongoose.model('X2DataLog');
const auth = require('../auth'),
const auth = require('../../../middlewares/auth'),
chalk = require('chalk'),
queries = require('../queries'),
utils = require('../utils');
queries = require('../../queries'),
utils = require('../../utils');
// Preload jump objects on routes with ':jump'
router.param('jump', function (req, res, next, slug) {
@@ -2,8 +2,8 @@ var router = require('express').Router(),
mongoose = require('mongoose'),
Jump = mongoose.model('Jump'),
User = mongoose.model('User');
const auth = require('../auth'),
queries = require('../queries');
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) {
@@ -1,7 +1,7 @@
var router = require('express').Router(),
mongoose = require('mongoose'),
User = mongoose.model('User');
const auth = require('../auth');
const auth = require('../../../middlewares/auth');
// Preload user profile on routes with ':username'
router.param('username', function (req, res, next, username) {
@@ -5,7 +5,7 @@ var router = require('express').Router(),
QcmQuestion = mongoose.model('QcmQuestion'),
QcmChoice = mongoose.model('QcmChoice'),
User = mongoose.model('User');
const auth = require('../auth');
const auth = require('../../../middlewares/auth');
// Preload qcm objects on routes with ':type'
router.param('type', function (req, res, next, type) {
@@ -2,7 +2,7 @@ var router = require('express').Router(),
mongoose = require('mongoose'),
User = mongoose.model('User');
const passport = require('passport'),
auth = require('../auth');
auth = require('../../auth');
router.get('/user', auth.required, function (req, res, next) {
//console.log(req.payload);
@@ -8,8 +8,8 @@ const {
updateArticle,
addFavoriteArticle,
deleteFavoriteArticle
} = require('../../controllers/article.controller');
const auth = require('../auth');
} = require('../../../controllers/article.controller');
const auth = require('../../../middlewares/auth');
const articleRouter = express.Router();
@@ -1,6 +1,6 @@
const express = require('express');
const { createComment, getAllComments } = require('../../controllers/comment.controller');
const auth = require('../auth');
const { createComment, getAllComments } = require('../../../controllers/comment.controller');
const auth = require('../../../middlewares/auth');
const commentRouter = express.Router();
+13
View File
@@ -0,0 +1,13 @@
const express = require('express');
const { createMember, getAllMembers, getMember, updateMember } = require('../../../controllers/herowars.controller');
const auth = require('../../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;
+11
View File
@@ -0,0 +1,11 @@
var routes = require('express').Router();
routes.use('/user', require('./user.routes'));
routes.use('/articles', require('./articles.routes'));
routes.use('/comment', require('./comment.routes'));
routes.use('/product', require('./product.routes'));
routes.use('/products', require('./products.routes'));
routes.use('/tag', require('./tag.routes'));
routes.use('/herowars', require('./herowars.routes'));
module.exports = routes;
@@ -3,19 +3,17 @@ const {
getProduct,
getProducts,
createProduct,
productsFeed,
addFavoriteProduct,
deleteFavoriteProduct,
deleteProduct,
updateProduct,
} = require('../../controllers/product.controller');
const auth = require('../auth');
} = 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('/feed', auth.required, productsFeed);
productRouter.get('/:slug', auth.optional, getProduct);
productRouter.put('/:slug', auth.required, updateProduct);
productRouter.delete('/:slug', auth.required, deleteProduct);
+15
View File
@@ -0,0 +1,15 @@
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;
@@ -1,6 +1,6 @@
const express = require('express');
const { createTag, getAllTags } = require('../../controllers/tag.controller');
const auth = require('../auth');
const { createTag, getAllTags } = require('../../../controllers/tag.controller');
const auth = require('../../../middlewares/auth');
const tagRouter = express.Router();
@@ -1,6 +1,6 @@
const express = require('express');
const { authenticate, createUser, getUser, loginAsUser, updateUser } = require('../../controllers/user.controller');
const auth = require('../auth');
const { authenticate, createUser, getUser, loginAsUser, updateUser } = require('../../../controllers/user.controller');
const auth = require('../../../middlewares/auth');
const userRouter = express.Router();
+14
View File
@@ -0,0 +1,14 @@
const express = require('express');
const { createClan, deleteClan, getAllClans, getClan, updateClan } = require('../../../controllers/clan.controller');
const auth = require('../../../middlewares/auth');
const clanRouter = express.Router();
//clanRouter.param('clanId', getClan);
clanRouter.get('/', auth.optional, getAllClans);
clanRouter.post('/', auth.required, createClan);
clanRouter.get('/:clanId', auth.required, getClan);
clanRouter.put('/:clanId', auth.required, updateClan);
clanRouter.delete('/:clanId', auth.required, deleteClan);
module.exports = clanRouter;
+6
View File
@@ -0,0 +1,6 @@
var routes = require('express').Router();
routes.use('/clans', require('./clans'));
routes.use('/members', require('./members'));
module.exports = routes;
+14
View File
@@ -0,0 +1,14 @@
const express = require('express');
const { createMember, deleteMember, getAllMembers, getMember, updateMember } = require('../../../controllers/member.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;
-82
View File
@@ -1,82 +0,0 @@
//var jwt = require('express-jwt');
var { expressjwt: jwt } = require("express-jwt"),
secret = require('../config').secret,
bcrypt = require('bcrypt');
const { v4 } = require('uuid'),
passport = require('passport'),
auths = ['Api-Key', 'Basic', 'Bearer', 'Token'];
function getTokenFromHeader(req) {
if(req.headers.authorization && auths.indexOf(req.headers.authorization.split(' ')[0]) !== -1) {
return req.headers.authorization.split(' ')[1];
}
return null;
}
const auth = {
requiredJwt: jwt({
secret: secret,
algorithms: ['HS256'],
requestProperty: 'payload',
getToken: getTokenFromHeader
}),
optional: jwt({
secret: secret,
algorithms: ['HS256'],
requestProperty: 'payload',
credentialsRequired: false,
getToken: getTokenFromHeader
}),
required: async (req, res, next) => {
if(req.headers.authorization && req.headers.authorization.split(' ')[0] === process.env.AUTHORIZATION_PREFIX) {
passport.authenticate('headerapikey', { session: false }, function (err, application, info) {
if (err) {
return next({message: "An authentication error occured.", err: err.message});
}
if (!application) {
return res.status(401).json({message: "Unauthorized - You are not allowed to access this resource.", err: err, info: info});
}
req.application = application;
req.payload = {id: application.author._id};
return next();
})(req, res, next);
} else {
return jwt({
secret: secret,
algorithms: ['HS256'],
requestProperty: 'payload',
getToken: getTokenFromHeader
})(req, res, next);
}
},
getAuthType: (req) => {
if(req.headers.authorization && auths.indexOf(req.headers.authorization.split(' ')[0]) !== -1) {
let value = req.headers.authorization.split(' ')[0];
return value;
}
return null;
},
generateAPIKey: async () => {
const key = v4().replace(/-/g, '');
const salt = secret;
// Génération d'un salt aléatoire : const salt = await Promise.resolve(bcrypt.genSalt(10));
const maskedKey = `${key.slice(0, 4)}...${key.slice(-4)}`;
const encryptedKey = await Promise.resolve(bcrypt.hash(key, salt));
return { key: key, masked: maskedKey, encrypted: encryptedKey};
},
authenticateKey: async (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 (authenticateKey).", err: err.message});
}
if (!application) {
return res.status(401).json({message: "Unauthorized - You are not allowed to access this resource.", err: err, info: info});
}
req.application = application;
return next();
})(req, res, next);
}
};
module.exports = auth;
+3
View File
@@ -1,4 +1,7 @@
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;