'use strict'; const { createCoreController } = require('@strapi/strapi').factories; const slugify = require('slugify'); const getSlug = text => { return slugify(text, {lower: true, remove: /[*#+~.()'"!:@]/g}); }; module.exports = createCoreController('api::artiste.artiste', ({strapi}) => ({ async create(ctx) { const {body} = ctx.request; let {data} = body; if (!data?.user?.documentId) { return ctx.badRequest('Informations manquantes.'); } const user = await strapi.documents('plugin::users-permissions.user').findOne({ documentId: body.data.user.documentId }); if (!user) { return ctx.notFound('Utilisateur introuvable.'); } if (user.id !== data.user.id || user.username !== data.user.username || user.email !== data.user.email) { return ctx.badRequest('Informations non valides.'); } const artiste = await strapi.db.query('api::artiste.artiste').findOne({ where: {slug: getSlug(data.alias)} }); if (artiste) { return artiste; } else { const newArtiste = await strapi.documents('api::artiste.artiste').create({ data: { alias: data.alias, user: user.id } }); return newArtiste; } } }));