182 lines
6.4 KiB
JavaScript
182 lines
6.4 KiB
JavaScript
|
import { Directus } from '@directus/sdk';
|
||
|
import fs from 'fs'
|
||
|
import yaml from 'js-yaml'
|
||
|
import nodemailer from 'nodemailer'
|
||
|
import crypto from 'crypto'
|
||
|
|
||
|
const DIRECTUS_URL = process.env.DIRECTUS_URL
|
||
|
const DIRECTUS_TOKEN = process.env.DIRECTUS_TOKEN
|
||
|
|
||
|
async function sendMail() {
|
||
|
// Envoi de mail
|
||
|
const directus = new Directus(DIRECTUS_URL, { auth: { staticToken: DIRECTUS_TOKEN }});
|
||
|
let transporter = nodemailer.createTransport({
|
||
|
host: "mail.mailo.com",
|
||
|
port: 465,
|
||
|
secure: true, // upgrade later with STARTTLS
|
||
|
auth: {
|
||
|
user: "simon@weko.io",
|
||
|
pass: "JfXO1LLkCaVO1wT",
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const name = "A Petit Point"
|
||
|
const contact = "Bénédicte JOUHANNAUD-DUBOST"
|
||
|
const mail = "simon@lamelio.fr"
|
||
|
|
||
|
// send mail with defined transport object
|
||
|
let info = await transporter.sendMail({
|
||
|
from: '"Simon CONSTANS" <simon@weko.io>', // sender address
|
||
|
to: '"' + contact + '" <' + mail + '>', // list of receivers
|
||
|
subject: "Demande de texte pour le bulletin municipal 2022", // Subject line
|
||
|
text: `Bonjour ${contact},
|
||
|
|
||
|
Je vous contact au sujet du bulletin municipal 2022 de Crémeaux.
|
||
|
Vous êtes la personne identifié pour remplir la partie de l'association «${name}». Si ce n'est pas le cas pouvez vous transférer le mail à la personne concernée.
|
||
|
|
||
|
Nous avons mis en place un système pour que vous puissiez remplir directement en ligne et nous faciliter le travail de mise en page.
|
||
|
|
||
|
Vous pouvez vous connecter :
|
||
|
- à l'adresse suivante : ${DIRECTUS_URL}
|
||
|
- avec l'identifiant : ${mail}
|
||
|
- et le mot de passe suivant : blablabla
|
||
|
|
||
|
Merci de remplir la partie votre document avant le 1 janvier 2022. Si vous avez un souci envoyez un mail à communication@cremeaux.fr.
|
||
|
|
||
|
Cordialement,
|
||
|
|
||
|
--
|
||
|
Simon CONSTANS de la commission communication de la municipalité de Crémeaux.`
|
||
|
// "Hello world?", // plain text body
|
||
|
// html: "<b>Hello world?</b>", // html body
|
||
|
});
|
||
|
|
||
|
console.log(info)
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
class Cremeaux {
|
||
|
constructor() {
|
||
|
this.directus = new Directus(DIRECTUS_URL, { auth: { staticToken: DIRECTUS_TOKEN }});
|
||
|
this.transporter = nodemailer.createTransport({
|
||
|
host: "mail.mailo.com",
|
||
|
port: 465,
|
||
|
secure: true, // upgrade later with STARTTLS
|
||
|
auth: {
|
||
|
user: "simon@weko.io",
|
||
|
pass: "JfXO1LLkCaVO1wT",
|
||
|
},
|
||
|
})
|
||
|
}
|
||
|
|
||
|
async associationCreate(association, user) {
|
||
|
const Association = await this.directus.items('Association')
|
||
|
return Association.createOne({ denomination: association.denomination, user_created: user.id })
|
||
|
}
|
||
|
|
||
|
async userCreate(association) {
|
||
|
// const role = '450a67e7-c1ad-46c1-bc38-7b5a82803f72'
|
||
|
// const users = yaml.load(fs.readFileSync('./directus-users.yml', 'utf8'));
|
||
|
const user = {
|
||
|
first_name: association.prenom,
|
||
|
last_name: association.nom,
|
||
|
email: association.mail,
|
||
|
password: association.password,
|
||
|
telephone: association.telephone,
|
||
|
language: 'fr-FR',
|
||
|
role: '82da3185-0bf0-497b-a72f-e0d6fa1645e2'
|
||
|
}
|
||
|
const Users = await this.directus.items('directus_users')
|
||
|
return Users.createOne(user);
|
||
|
}
|
||
|
|
||
|
async bulletinCreate(association, user) {
|
||
|
const Bulletin = await this.directus.items('Bulletin')
|
||
|
return Bulletin.createOne({ titre: association.denomination, user_created: user.id });
|
||
|
}
|
||
|
|
||
|
async sendMail(compte, bulletin, association) {
|
||
|
|
||
|
|
||
|
const name = compte.denomination
|
||
|
const contact = `${compte.prenom} ${compte.nom}`
|
||
|
const mail = compte.mail
|
||
|
const password = compte.password
|
||
|
|
||
|
// send mail with defined transport object
|
||
|
return await this.transporter.sendMail({
|
||
|
from: '"Simon CONSTANS" <simon@weko.io>', // sender address
|
||
|
to: '"' + contact + '" <' + mail + '>', // list of receivers
|
||
|
subject: "Demande de texte pour le bulletin municipal 2022", // Subject line
|
||
|
text: `Bonjour ${contact},
|
||
|
|
||
|
Je vous contact au sujet du bulletin municipal 2022 de Crémeaux.
|
||
|
Vous êtes la personne identifié pour remplir la partie de l'association « ${name} ». Si ce n'est pas le cas, pouvez vous transférer le mail à la personne concernée.
|
||
|
|
||
|
Nous avons mis en place un système pour que vous puissiez remplir directement en ligne et nous faciliter le travail de mise en page, sans avoir à passer par de nombreux mails.
|
||
|
|
||
|
Vous pouvez vous connecter :
|
||
|
- à l'adresse : ${DIRECTUS_URL}
|
||
|
- avec l'identifiant : ${mail}
|
||
|
- et le mot de passe : ${password}
|
||
|
|
||
|
Une fois connecté, vous pouvez remplir :
|
||
|
- les informations spécifiques de l'association ainsi que son bureau :
|
||
|
${DIRECTUS_URL}/admin/content/Association/${association.id}
|
||
|
- le texte pour le bulletin :
|
||
|
${DIRECTUS_URL}/admin/content/Bulletin/${bulletin.id}
|
||
|
- changer votre mot de passe :
|
||
|
${DIRECTUS_URL}/admin/users/me
|
||
|
|
||
|
Merci de remplir les informations avant le 10 janvier 2022.
|
||
|
Si vous avez un souci vous pouvez retrouver une fiche explicative à cette adresse https://md.weko.io/contenu_cremeaux_fr
|
||
|
ou envoyez un mail à com@cremeaux.fr
|
||
|
|
||
|
Cordialement,
|
||
|
|
||
|
--
|
||
|
Simon CONSTANS pour la commission communication de la municipalité de Crémeaux.`
|
||
|
// "Hello world?", // plain text body
|
||
|
// html: "<b>Hello world?</b>", // html body
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function main() {
|
||
|
// await associationsCreate()
|
||
|
const cremeaux = new Cremeaux()
|
||
|
const associations = JSON.parse(fs.readFileSync('./associations.json', 'utf8'))
|
||
|
// const associations = await cremeaux.assocationsReadMany()
|
||
|
for (const association of associations) {
|
||
|
// if (association.prenom == 'Sandra') {
|
||
|
console.log(`Traitement de ${association.denomination} :`)
|
||
|
|
||
|
let user = { id: '9f4578b3-22b9-4b1d-91ca-eaf4fbc84a1e' }
|
||
|
let password = ''
|
||
|
if (association.mail) {
|
||
|
association.password = crypto.createHash('sha256').update(association.mail, 'utf8').digest('hex').substring(association.mail.lenght, 10)
|
||
|
// Création de l'utilisateur
|
||
|
user = await cremeaux.userCreate(association)
|
||
|
console.log(`- L'utilisateur '${user.email}' a été créé avec le mot de passe '${password}'.`)
|
||
|
}
|
||
|
|
||
|
// Création du bulletin
|
||
|
const bulletin = await cremeaux.bulletinCreate(association, user);
|
||
|
console.log(`- Le bulletin de l'association ${bulletin.titre} a été créé.`)
|
||
|
|
||
|
// Création d'une association
|
||
|
const asso = await cremeaux.associationCreate(association, user);
|
||
|
console.log(`- L'association ${asso.denomination} a été créé.`)
|
||
|
|
||
|
if (association.mail) {
|
||
|
// Envoi d'un mail
|
||
|
const mail = await cremeaux.sendMail(association, bulletin, asso)
|
||
|
console.log(mail)
|
||
|
}
|
||
|
// }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
main().catch(console.error);
|