From b21b77e5134ee3c54508ba3c3faaf4a9eac61e58 Mon Sep 17 00:00:00 2001 From: pikiou Date: Wed, 2 Feb 2022 01:31:57 +0100 Subject: [PATCH] Add dev volunteers to anonymized accounts --- src/components/Notifications/index.tsx | 17 +++-- src/server/gsheets/accessors.ts | 8 +-- src/server/gsheets/localDb.ts | 90 +++++++++++++++++--------- 3 files changed, 75 insertions(+), 40 deletions(-) diff --git a/src/components/Notifications/index.tsx b/src/components/Notifications/index.tsx index 417b0ee..1c08df9 100644 --- a/src/components/Notifications/index.tsx +++ b/src/components/Notifications/index.tsx @@ -192,7 +192,7 @@ Tu n'y es absolument pas obligé(e) ! C'est juste plus pratique. const isChecked = event.target.value === "oui" if (!isChecked) { - setNotifMessage("") + setNotifMessage("Réponse mémorisée.") setAcceptsNotifs("non") dispatch( fetchVolunteerNotifsSet(jwtToken, 0, { @@ -326,10 +326,15 @@ Tu n'y es absolument pas obligé(e) ! C'est juste plus pratique.
diff --git a/src/server/gsheets/accessors.ts b/src/server/gsheets/accessors.ts index 972c78d..d885f6c 100644 --- a/src/server/gsheets/accessors.ts +++ b/src/server/gsheets/accessors.ts @@ -213,11 +213,11 @@ export class Sheet< async dbFirstLoad(): Promise { if (!(await hasGSheetsAccess())) { await this.loadLocalDb() + } else if (this.toRunAfterLoad && __DEV__) { + this.toRunAfterLoad.push(() => this.saveLocalDb()) } - this.dbLoad() - if (__DEV__ && (await hasGSheetsAccess())) { - this.saveLocalDb() - } + + await this.dbLoad() } private async dbSaveAsync(): Promise { diff --git a/src/server/gsheets/localDb.ts b/src/server/gsheets/localDb.ts index 93a2c25..a2e43ff 100644 --- a/src/server/gsheets/localDb.ts +++ b/src/server/gsheets/localDb.ts @@ -38,11 +38,11 @@ export async function saveLocalDb( states[name] = state types[name] = type const toSave = { states, types } - const jsonDB = __DEV__ ? JSON.stringify(toSave, null, 2) : JSON.stringify(toSave) + const jsonDB = __DEV__ ? JSON.stringify(toSave, null, 4) : JSON.stringify(toSave) await fs.writeFile(DB_PATH, jsonDB) toSave.states = anonimizedDb(toSave.states) - const jsonAnonimizedDB = __DEV__ ? JSON.stringify(toSave, null, 2) : JSON.stringify(toSave) + const jsonAnonimizedDB = __DEV__ ? JSON.stringify(toSave, null, 4) : JSON.stringify(toSave) await fs.writeFile(ANONYMIZED_DB_PATH, jsonAnonimizedDB) } @@ -253,47 +253,73 @@ function anonimizedDb(_s: States): States { const s = _.cloneDeep(_s) if (s.Volunteers) { ;(s.Volunteers as Volunteer[]).forEach((v) => { - v.firstname = fakeFirstnames[numberToRand(v.id) % fakeFirstnames.length] - v.lastname = fakeLastnames[numberToRand(v.id) % fakeLastnames.length] - const fakeEmailDomain = fakeEmailDomains[numberToRand(v.id) % fakeEmailDomains.length] - v.email = `${v.firstname}.${v.lastname}.${v.id}@${fakeEmailDomain}`.toLowerCase() - const mobileStart = v.mobile.match(/^\+?[0-9][0-9]/) - const mobileEnd = [1, 2, 3, 4] - .map((n) => `${numberToRand(v.id + n) % 10}${numberToRand(v.id + n + 10) % 10}`) - .join(" ") - v.mobile = v.mobile ? `${(mobileStart || ["06"])[0]} ${mobileEnd}` : "" - v.photo = `${v.firstname}_${v.lastname}.jpg`.toLowerCase() - v.password1 = "$2y$1a$Kt/FAKEFAKEFAKEFAKEc6.FAKEFAKEFAKEFAKE//FAKEFAKEFAKEy" - v.password2 = "$2y$1a$Kt/FAKEFAKEFAKEFAKEc6.FAKEFAKEFAKEFAKE//FAKEFAKEFAKEy" - v.acceptsNotifs = "" - if (v.id % 13 === 0) { - v.acceptsNotifs = "oui" - } else if (v.id % 251 === 0) { - v.acceptsNotifs = "non" + anonimizedNameEmailMobile(v) + if (!idADev(v)) { + v.photo = `${v.firstname}_${v.lastname}.jpg`.toLowerCase() } - v.pushNotifSubscription = - v.id % 13 === 0 - ? '{"endpoint":"https://fcm.googleapis.com/fcm/send/f-EAfakedfakedU:APA91fakedfakedzIk-DEglfakedfaked9ugI--ljtfakedfakedfakedfakedfakedfakedP3t-ggU7Afakedfakedfakedkai","expirationTime":null,"keys":{"p256dh":"BEZOJSfakedfakedfakedfakedfakedfakedfakedfakedfakedfakedgYs-cafakedw","auth":"GlMfakedfakedFRg"}}' - : "" + anonimizedPasswords(v) + anonimizedNotifs(v) }) } if (s.PreVolunteers) { ;(s.PreVolunteers as PreVolunteer[]).forEach((v) => { - v.firstname = fakeFirstnames[numberToRand(v.id) % fakeFirstnames.length] - v.lastname = fakeLastnames[numberToRand(v.id) % fakeLastnames.length] - const fakeEmailDomain = fakeEmailDomains[numberToRand(v.id) % fakeEmailDomains.length] - v.email = `${v.firstname}.${v.lastname}.${v.id}@${fakeEmailDomain}`.toLowerCase() - const mobileStart = v.mobile.match(/^\+?[0-9][0-9]/) - const mobileEnd = [1, 2, 3, 4] - .map((n) => `${numberToRand(v.id + n) % 10}${numberToRand(v.id + n + 10) % 10}`) - .join(" ") - v.mobile = v.mobile ? `${(mobileStart || ["06"])[0]} ${mobileEnd}` : "" + anonimizedNameEmailMobile(v) v.comment = v.id % 3 === 0 ? "Bonjour, j'adore l'initiative!" : "" }) } return s } +function idADev(v: Volunteer | PreVolunteer): boolean { + const devList = ["Pierre Scelles", "Manuel Emeriau", "Timothé Caillaud"] + return devList.includes(`${v.firstname} ${v.lastname}`) +} + +function anonimizedNameEmailMobile(v: Volunteer | PreVolunteer): void { + if (idADev(v)) { + return + } + + v.firstname = fakeFirstnames[numberToRand(v.id) % fakeFirstnames.length] + v.lastname = fakeLastnames[numberToRand(v.id) % fakeLastnames.length] + + const fakeEmailDomain = fakeEmailDomains[numberToRand(v.id) % fakeEmailDomains.length] + v.email = `${v.firstname}.${v.lastname}.${v.id}@${fakeEmailDomain}`.toLowerCase() + + const mobileStart = v.mobile.match(/^\+?[0-9][0-9]/) + const mobileEnd = [1, 2, 3, 4] + .map((n) => `${numberToRand(v.id + n) % 10}${numberToRand(v.id + n + 10) % 10}`) + .join(" ") + v.mobile = v.mobile ? `${(mobileStart || ["06"])[0]} ${mobileEnd}` : "" +} + +function anonimizedPasswords(v: Volunteer): void { + if (idADev(v)) { + v.password1 = "$2b$10$CMv7lEQKWM7XEJtumt0qsOw4dPANs6lT6dI2N27XmJP0Jm4rscmq." + return + } + + v.password1 = "$2y$1a$Kt/FAKEFAKEFAKEFAKEc6.FAKEFAKEFAKEFAKE//FAKEFAKEFAKEy" + v.password2 = "$2y$1a$Kt/FAKEFAKEFAKEFAKEc6.FAKEFAKEFAKEFAKE//FAKEFAKEFAKEy" +} + +function anonimizedNotifs(v: Volunteer): void { + if (idADev(v)) { + return + } + + v.acceptsNotifs = "" + if (v.id % 13 === 0) { + v.acceptsNotifs = "oui" + } else if (v.id % 251 === 0) { + v.acceptsNotifs = "non" + } + v.pushNotifSubscription = + v.id % 13 === 0 + ? '{"endpoint":"https://fcm.googleapis.com/fcm/send/f-EAfakedfakedU:APA91fakedfakedzIk-DEglfakedfaked9ugI--ljtfakedfakedfakedfakedfakedfakedP3t-ggU7Afakedfakedfakedkai","expirationTime":null,"keys":{"p256dh":"BEZOJSfakedfakedfakedfakedfakedfakedfakedfakedfakedfakedgYs-cafakedw","auth":"GlMfakedfakedFRg"}}' + : "" +} + function numberToRand(n: number) { return (1664525 * n + 1013904223) % 512 }