wip
Some checks reported errors
continuous-integration/drone/push Build was killed

This commit is contained in:
2023-12-11 09:47:46 +01:00
parent 6ba7ad1782
commit 3f9e8fe673
404 changed files with 3220 additions and 91 deletions

230
scripts2/associations.json Normal file
View File

@ -0,0 +1,230 @@
[
{
"denomination": "Syndicat Agricole",
"mail": "cote.roseraie@orange.fr",
"telephone": "04 77 62 58 13",
"prenom": "Emmanuel",
"nom": "COTE"
},
{
"denomination": "ESAT, Le colombier, La Blégnière",
"mail": "cat-blegniere@wanadoo.fr",
"telephone": "04 77 63 12 59",
"prenom": "Laurent",
"nom": "RUSSIAS"
},
{
"denomination": "FNACA",
"mail": "de.terrier@laposte.net",
"telephone": "04 77 62 54 80",
"prenom": "Christiane",
"nom": "TERRIER"
},
{
"denomination": "Saint Joseph",
"mail": "mauricesouchon@laposte.net",
"telephone": "04 77 65 27 25",
"prenom": "Maurice",
"nom": "SOUCHON"
},
{
"denomination": "Le Réveil Crémeausien",
"mail": null,
"telephone": "04 77 62 59 54",
"prenom": "Christophe",
"nom": "DEJOB"
},
{
"denomination": "Amicale des Donneurs de Sang",
"mail": "annieponcet@hotmail.fr",
"telephone": "04 77 62 51 85",
"prenom": "Annie",
"nom": "PONCET"
},
{
"denomination": "CUMA",
"mail": "a.maillet@42.sideral.fr",
"telephone": "06 30 66 35 38",
"prenom": "Aurélien",
"nom": "MAILLET-FEUGERE"
},
{
"denomination": "Amicale des Pompiers",
"mail": "jean-luc.pras@orange.fr",
"telephone": "04 77 62 59 19",
"prenom": "Jean-Luc",
"nom": "PRAS"
},
{
"denomination": "LACIM",
"mail": "alainanniesimon@outlook.fr",
"telephone": "04 77 65 25 66",
"prenom": "Annie",
"nom": "SIMON"
},
{
"denomination": "Restaurent de la Tour",
"mail": "ccindypras@gmail.com",
"telephone": "06 75 76 10 64",
"prenom": "Cindy",
"nom": "PRAS"
},
{
"denomination": "S.O.U. des Écoles",
"mail": "contact@spip-informatique.com",
"telephone": "06 89 50 40 44",
"prenom": "Samuel",
"nom": "MONIER"
},
{
"denomination": "Moto Club",
"mail": null,
"telephone": "04 77 62 55 49",
"prenom": "Fabrice",
"nom": "DUPUY"
},
{
"denomination": "Comité des Fêtes",
"mail": "comitedesfetes.cremeaux@yahoo.fr",
"telephone": "04 77 62 50 94",
"prenom": "Lydie et Franck",
"nom": "MAILLET-FEUGERE"
},
{
"denomination": "À Petit Point",
"mail": "benedicte.jouhannaud@educagri.fr",
"telephone": "04 77 62 53 96",
"prenom": "Bénédicte",
"nom": "JOUHANNAUD-DUBOST"
},
{
"denomination": "L'Œil Ecoute",
"mail": "emilie.peuriere@orange.fr",
"telephone": "04 77 62 53 81",
"prenom": "Emilie",
"nom": "PEURIÈRE"
},
{
"denomination": "Familles Rurales",
"mail": "afrcremeaux@gmail.com",
"telephone": "04 77 62 51 26",
"prenom": "Nicole",
"nom": "DURAND"
},
{
"denomination": "L'Entente Crémeausienne",
"mail": "jbponcet1@gmail.com",
"telephone": null,
"prenom": "Jean-Bernard",
"nom": "PONCET"
},
{
"denomination": "Association Bouliste",
"mail": null,
"telephone": "04 77 65 20 21",
"prenom": "Daniel",
"nom": "BOST"
},
{
"denomination": "C.S.C Football",
"mail": "vernay.mathieu@orange.fr",
"telephone": "06 80 89 70 95",
"prenom": "Mathieu",
"nom": "VERNAY"
},
{
"denomination": "Basket Club",
"mail": "jeremy-muron1@hotmail.fr",
"telephone": "06 89 19 86 99",
"prenom": "Jérémy",
"nom": "MURON"
},
{
"denomination": "Gymnastique Volontaire",
"mail": "chaux-didier@wanadoo.fr;",
"telephone": "04 77 62 51 66",
"prenom": "Viviane",
"nom": "CHAUX"
},
{
"denomination": "Association Communale de Chasse Agréée",
"mail": "pierre.ervas@gmail.com",
"telephone": "04 77 69 76 52",
"prenom": "Jean-Paul",
"nom": "MARCHEBOEUF"
},
{
"denomination": "Association Contraste",
"mail": "clodervaux42@aol.com",
"telephone": "04 77 62 50 03",
"prenom": "Claudine",
"nom": "DERVAUX"
},
{
"denomination": "Club Rencontres et Loisirs",
"mail": "monique.bernard.dubost@orange.fr",
"telephone": "04 77 62 56 11",
"prenom": "Bernard",
"nom": "DUBOST"
},
{
"denomination": "Amicale des anciens sapeurs pompiers de Crémeaux",
"mail": null,
"telephone": null,
"prenom": "Bernard",
"nom": "CROZET"
},
{
"denomination": "Lucé Loisirs",
"mail": "adeline.chapuis42@gmail.com",
"telephone": "06 38 52 94 63",
"prenom": "Adeline",
"nom": "PALABOST"
},
{
"denomination": "BavARTdâge",
"mail": "francoise@lesmursdecouleurs.com",
"telephone": "",
"prenom": "Françoise",
"nom": "BOUCGAND GIRAUD"
},
{
"denomination": "Le Petit Royaume",
"mail": null,
"telephone": "04 77 62 56 34",
"prenom": "Michelle et Guy",
"nom": "HOCQUET"
},
{
"denomination": "Association Test",
"mail": "garriviersandra@gmail.com",
"telephone": "06 70 06 86 63",
"prenom": "Sandra",
"nom": "GARRIVIER",
"test": "true"
},
{
"denomination": "Association Test",
"mail": "elodie.bourg@gmail.com",
"telephone": "07 60 43 99 07",
"prenom": "Elodie",
"nom": "BOURG",
"test": "true"
},
{
"denomination": "Association Test",
"mail": "simon@lamelio.fr",
"telephone": "06 80 26 86 61",
"prenom": "Simon",
"nom": "CONSTANS",
"test": "true"
},
{
"denomination": "Association Test",
"mail": "laurent.loizzo@gmail.com",
"telephone": "06 42 35 68 46",
"prenom": "Laurent",
"nom": "LOÏZZO",
"test": "true"
}
]

View File

@ -0,0 +1,181 @@
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);

View File

@ -0,0 +1,6 @@
---
- first_name: Test
last_name: Test
email: simon@lamelio.fr
password: test

118
scripts2/package-lock.json generated Normal file
View File

@ -0,0 +1,118 @@
{
"name": "cremeaux",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "cremeaux",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@directus/sdk": "^9.1.2",
"js-yaml": "^4.1.0",
"nodemailer": "^6.7.2"
}
},
"node_modules/@directus/sdk": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/@directus/sdk/-/sdk-9.1.2.tgz",
"integrity": "sha512-rh/57egsojAvA2Kqvie0UZzASXEcB43264c/9qzeg0sKHcd57sksfYeBO4/RO8DlBPLdaMK4l477/njRpJQKmg==",
"dependencies": {
"axios": "^0.24.0"
}
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"node_modules/axios": {
"version": "0.24.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
"integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
"dependencies": {
"follow-redirects": "^1.14.4"
}
},
"node_modules/follow-redirects": {
"version": "1.14.5",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
"integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/nodemailer": {
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.2.tgz",
"integrity": "sha512-Dz7zVwlef4k5R71fdmxwR8Q39fiboGbu3xgswkzGwczUfjp873rVxt1O46+Fh0j1ORnAC6L9+heI8uUpO6DT7Q==",
"engines": {
"node": ">=6.0.0"
}
}
},
"dependencies": {
"@directus/sdk": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/@directus/sdk/-/sdk-9.1.2.tgz",
"integrity": "sha512-rh/57egsojAvA2Kqvie0UZzASXEcB43264c/9qzeg0sKHcd57sksfYeBO4/RO8DlBPLdaMK4l477/njRpJQKmg==",
"requires": {
"axios": "^0.24.0"
}
},
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"axios": {
"version": "0.24.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
"integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
"requires": {
"follow-redirects": "^1.14.4"
}
},
"follow-redirects": {
"version": "1.14.5",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
"integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA=="
},
"js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"requires": {
"argparse": "^2.0.1"
}
},
"nodemailer": {
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.2.tgz",
"integrity": "sha512-Dz7zVwlef4k5R71fdmxwR8Q39fiboGbu3xgswkzGwczUfjp873rVxt1O46+Fh0j1ORnAC6L9+heI8uUpO6DT7Q=="
}
}
}

18
scripts2/package.json Normal file
View File

@ -0,0 +1,18 @@
{
"name": "cremeaux",
"version": "1.0.0",
"description": "Script pour gérer le site de Crémeaux",
"main": "index.js",
"type": "module",
"scripts": {
"directus-users-create": "node directus-users-create.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@directus/sdk": "^9.1.2",
"js-yaml": "^4.1.0",
"nodemailer": "^6.7.2"
}
}