224 lines
6.3 KiB
JavaScript
224 lines
6.3 KiB
JavaScript
const { Router } = require('express')
|
|
const fileUpload = require('express-fileupload')
|
|
const { body } = require('express-validator')
|
|
const adminController = require('../controllers/admin')
|
|
const Functions = require('../models/functions')
|
|
const Categories = require('../models/categories')
|
|
|
|
const AdminRouter = Router()
|
|
|
|
AdminRouter.route('/functions')
|
|
|
|
// Récupère les fonctions
|
|
.get(adminController.getFunctions)
|
|
|
|
// Permet de créé une fonction
|
|
.post(
|
|
fileUpload({
|
|
useTempFiles: true,
|
|
safeFileNames: true,
|
|
preserveExtension: Number,
|
|
limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
|
|
parseNested: true
|
|
}),
|
|
[
|
|
body('title')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir un titre.')
|
|
.isLength({ max: 100 })
|
|
.withMessage('Le titre est trop long.')
|
|
.custom(title => {
|
|
if (title === 'undefined') {
|
|
return Promise.reject(new Error('La fonction doit avoir un titre.'))
|
|
}
|
|
return true
|
|
}),
|
|
body('slug')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir un slug.')
|
|
.isLength({ max: 100 })
|
|
.withMessage('Le slug est trop long.')
|
|
.custom(slug => {
|
|
if (slug === 'undefined') {
|
|
return Promise.reject(new Error('La fonction doit avoir un slug.'))
|
|
}
|
|
return true
|
|
})
|
|
.custom(async slug => {
|
|
try {
|
|
const FunctionSlug = await Functions.findOne({ where: { slug } })
|
|
if (FunctionSlug) {
|
|
return Promise.reject(new Error('Le slug existe déjà...'))
|
|
}
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
return true
|
|
}),
|
|
body('description')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir une description.')
|
|
.isLength({ max: 255, min: 1 })
|
|
.withMessage('La description est trop longue.')
|
|
.custom(description => {
|
|
if (description === 'undefined') {
|
|
return Promise.reject(
|
|
new Error('La fonction doit avoir une description.')
|
|
)
|
|
}
|
|
return true
|
|
}),
|
|
body('categorieId')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir une catégorie.')
|
|
.custom(async categorieId => {
|
|
try {
|
|
const categorieFound = await Categories.findOne({
|
|
where: { id: parseInt(categorieId) }
|
|
})
|
|
if (!categorieFound) {
|
|
return Promise.reject(new Error("La catégorie n'existe pas!"))
|
|
}
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
return true
|
|
}),
|
|
body('type').custom(type => {
|
|
if (!(type === 'article' || type === 'form' || type === 'page')) {
|
|
return Promise.reject(
|
|
new Error(
|
|
'Le type de la fonction peut être : article, form ou page.'
|
|
)
|
|
)
|
|
}
|
|
return true
|
|
})
|
|
],
|
|
adminController.postFunction
|
|
)
|
|
|
|
AdminRouter.route('/functions/:slug')
|
|
|
|
// Récupère les informations d'une fonction
|
|
.get(adminController.getFunctionBySlug)
|
|
|
|
AdminRouter.route('/functions/:id')
|
|
|
|
// Modifie information basique d'une fonction
|
|
.put(
|
|
fileUpload({
|
|
useTempFiles: true,
|
|
safeFileNames: true,
|
|
preserveExtension: Number,
|
|
limits: { fileSize: 5 * 1024 * 1024 }, // 5mb,
|
|
parseNested: true
|
|
}),
|
|
[
|
|
body('title')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir un titre.')
|
|
.isLength({ max: 100 })
|
|
.withMessage('Le titre est trop long.')
|
|
.custom(title => {
|
|
if (title === 'undefined') {
|
|
return Promise.reject(new Error('La fonction doit avoir un titre.'))
|
|
}
|
|
return true
|
|
}),
|
|
body('slug')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir un slug.')
|
|
.isLength({ max: 100 })
|
|
.withMessage('Le slug est trop long.')
|
|
.custom(slug => {
|
|
if (slug === 'undefined') {
|
|
return Promise.reject(new Error('La fonction doit avoir un slug.'))
|
|
}
|
|
return true
|
|
}),
|
|
body('description')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir une description.')
|
|
.isLength({ max: 255, min: 1 })
|
|
.withMessage('La description est trop longue.')
|
|
.custom(description => {
|
|
if (description === 'undefined') {
|
|
return Promise.reject(
|
|
new Error('La fonction doit avoir une description.')
|
|
)
|
|
}
|
|
return true
|
|
}),
|
|
body('categorieId')
|
|
.not()
|
|
.isEmpty()
|
|
.withMessage('La fonction doit avoir une catégorie.')
|
|
.custom(async categorieId => {
|
|
try {
|
|
const categorieFound = await Categories.findOne({
|
|
where: { id: parseInt(categorieId) }
|
|
})
|
|
if (!categorieFound) {
|
|
return Promise.reject(new Error("La catégorie n'existe pas!"))
|
|
}
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
return true
|
|
}),
|
|
body('type').custom(type => {
|
|
if (!(type === 'article' || type === 'form' || type === 'page')) {
|
|
return Promise.reject(
|
|
new Error(
|
|
'Le type de la fonction peut être : article, form ou page.'
|
|
)
|
|
)
|
|
}
|
|
return true
|
|
})
|
|
],
|
|
adminController.putFunction
|
|
)
|
|
|
|
// Supprime une fonction avec son id
|
|
.delete(adminController.deleteFunction)
|
|
|
|
AdminRouter.route('/functions/article/:id')
|
|
.put(adminController.putFunctionArticle)
|
|
|
|
AdminRouter.route('/functions/form/:id')
|
|
.put(adminController.putFunctionForm)
|
|
|
|
AdminRouter.route('/categories')
|
|
|
|
// Crée une catégorie
|
|
.post(adminController.postCategory)
|
|
|
|
AdminRouter.route('/categories/:id')
|
|
|
|
// Modifier une catégorie avec son id
|
|
.put(adminController.putCategory)
|
|
|
|
// Supprime une catégorie avec son id
|
|
.delete(adminController.deleteCategory)
|
|
|
|
AdminRouter.route('/quotes')
|
|
|
|
// Récupère les citations pas encore validées
|
|
.get(adminController.getQuotes)
|
|
|
|
AdminRouter.route('/quotes/:id')
|
|
|
|
// Valide ou supprime une citation
|
|
.put(adminController.putQuote)
|
|
|
|
module.exports = AdminRouter
|