Création de l'extension 'directus-extension-new-user'

This commit is contained in:
2024-12-22 03:43:07 +04:00
parent 90f07c68db
commit bc0aafa8b3
5 changed files with 5100 additions and 0 deletions
@@ -0,0 +1 @@
EMAIL_NEW_USER=
@@ -0,0 +1,3 @@
.DS_Store
node_modules
dist
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,29 @@
{
"name": "directus-extension-new-user",
"description": "Envoie un e-mail lors de linscription dun utilisateur",
"icon": "extension",
"version": "1.0.0",
"keywords": [
"directus",
"directus-extension",
"directus-extension-hook"
],
"type": "module",
"files": [
"dist"
],
"directus:extension": {
"type": "hook",
"path": "dist/index.js",
"source": "src/index.js",
"host": "^10.10.0"
},
"scripts": {
"build": "directus-extension build",
"dev": "directus-extension build -w --no-minify",
"link": "directus-extension link"
},
"devDependencies": {
"@directus/extensions-sdk": "12.1.4"
}
}
@@ -0,0 +1,53 @@
export default ({filter}, {services, env}) => {
const checkEmailExists = async (email, database) => {
const user = await database('directus_users')
.select('id')
.where({email})
.first()
return user !== undefined
}
filter('users.create', async (input, {schema}, {database}) => {
if (!services.MailService) {
console.error('Le service MailService est manquant.')
return input
}
const adminEmail = env.EMAIL_NEW_USER
if (!adminEmail) {
console.error('La variable EMAIL_NEW_USER est manquante.')
return input
}
const emailExists = await checkEmailExists(input.email, database)
if (emailExists) {
console.error('Ladresse e-mail est déjà utilisée.')
return input
}
try {
const mailService = new services.MailService({schema})
mailService.send({
to: adminEmail,
subject: `Nouvel utilisateur : ${input.email}`,
text: `Un nouvel utilisateur a été créé :\n Nom: ${input.first_name || 'N/A'} Email: ${input.email || 'N/A'}\n `,
html: `
<p>Un nouvel utilisateur a été créé :</p>
<ul>
<li><strong>Nom:</strong> ${input.first_name || 'N/A'} </li>
<li><strong>Email:</strong> ${input.email || 'N/A'}</li>
</ul>
`,
})
console.log('Email envoyé avec succès à', adminEmail)
} catch (err) {
console.error("Erreur lors de lenvoi de le-mail via MailService:", err)
}
return input
})
}