Fix error and improve commentaire lifecycles
This commit is contained in:
@@ -1,40 +1,64 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const jwennTeksEpiId = async teksId => {
|
const { ValidationError, NotFoundError } = require("@strapi/utils").errors
|
||||||
const paroles = await strapi.db.query('api::parole.parole').findOne({id: teksId})
|
|
||||||
return paroles
|
|
||||||
}
|
|
||||||
|
|
||||||
const jwennUserEpiId = async userId => {
|
const jwennUserEpiId = async userId => {
|
||||||
const user = await strapi.db.query('plugin::users-permissions.user').findOne({id: userId})
|
if (!userId) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
const user = await strapi.db.query('plugin::users-permissions.user').findOne({
|
||||||
|
where: {id: userId}
|
||||||
|
})
|
||||||
|
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const jwennParoleEpiId = async paroleId => {
|
||||||
|
if (!paroleId) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
const parole = await strapi.db.query('api::parole.parole').findOne({
|
||||||
|
where: {id: paroleId}
|
||||||
|
})
|
||||||
|
|
||||||
|
return parole
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateCommentaire = data => {
|
||||||
|
if (!data.contenu && !data.datePublication) {
|
||||||
|
throw new ValidationError('Mauvaise requête, contenu et datePublication sont obligatoires')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data.contenu || data.contenu.trim().length === 0) {
|
||||||
|
throw new ValidationError('Champ obligatoire. Veuillez renseigner le contenu du commentaire.')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.contenu.trim().length > 500) {
|
||||||
|
throw new ValidationError('Le commentaire doit contenir 500 caractères maximum.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
beforeCreate: async event => {
|
beforeCreate: async event => {
|
||||||
let {data} = event.params
|
const {data} = event.params
|
||||||
|
validateCommentaire(data)
|
||||||
if (data.contenu && data.parole && data.user) {
|
|
||||||
const parole = await jwennTeksEpiId(data.parole)
|
|
||||||
const user = await jwennUserEpiId(data.user)
|
|
||||||
|
|
||||||
if(!parole || !user) {
|
|
||||||
throw new NotFoundError('Introuvable')
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
throw new ValidationError('Mauvaise requête')
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
afterCreate: async event => {
|
afterCreate: async event => {
|
||||||
const {data} = event.params
|
const {data, result} = event.params
|
||||||
const user = await jwennUserEpiId(data.user)
|
const user = await jwennUserEpiId(data.user)
|
||||||
|
const parole = await jwennParoleEpiId(data.parole)
|
||||||
|
|
||||||
|
if (!parole) {
|
||||||
|
throw new NotFoundError('Texte introuvable.')
|
||||||
|
}
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
strapi.plugins['email'].services.email.send({
|
strapi.plugins['email'].services.email.send({
|
||||||
from: process.env.SMTP_FROM,
|
from: process.env.SMTP_FROM,
|
||||||
to: process.env.SMTP_SEND_TO,
|
to: process.env.SMTP_SEND_TO,
|
||||||
subject: `Nouveau commentaire de ${user.username}`,
|
subject: `Commentaire de ${user.username} sur "${parole.titre}"`,
|
||||||
html: data.contenu
|
html: data.contenu
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user