diff --git a/bun.lockb b/bun.lockb index 8e2c73c8..ae9de7a9 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/packages/~/infra/moncomptepro/database/package.json b/packages/~/infra/moncomptepro/database/package.json index ba809817..7cb7fcf2 100644 --- a/packages/~/infra/moncomptepro/database/package.json +++ b/packages/~/infra/moncomptepro/database/package.json @@ -29,7 +29,7 @@ "pg": "8.13.0" }, "devDependencies": { - "@electric-sql/pglite": "0.2.12", + "@electric-sql/pglite": "0.2.13", "@types/pg": "8.11.10", "@~/config.typescript": "workspace:*", "drizzle-kit": "0.28.0" diff --git a/packages/~/infra/zammad/api/package.json b/packages/~/infra/zammad/api/package.json index 7fb65c18..f3a409aa 100644 --- a/packages/~/infra/zammad/api/package.json +++ b/packages/~/infra/zammad/api/package.json @@ -12,7 +12,7 @@ "test": "bun test" }, "dependencies": { - "@hono/zod-validator": "0.2.2", + "@hono/zod-validator": "0.4.1", "@~/app.core": "workspace:*", "@~/zammad.lib": "workspace:*", "hono": "4.6.10", diff --git a/packages/~/moderations/ui/src/Actions/context.ts b/packages/~/moderations/ui/src/Actions/context.ts index 6bc6b3df..30ff5bf7 100644 --- a/packages/~/moderations/ui/src/Actions/context.ts +++ b/packages/~/moderations/ui/src/Actions/context.ts @@ -13,7 +13,10 @@ export interface Values { domain: string; moderation: SimplifyDeep< Pick & { - organization: Pick; + organization: Pick< + Organization, + "cached_libelle" | "id" | "siret" | "cached_libelle_categorie_juridique" + >; user: Pick; } >; diff --git a/packages/~/moderations/ui/src/Actions/responses/__snapshots__/min_armees_terre_marine_musee.test.tsx.snap b/packages/~/moderations/ui/src/Actions/responses/__snapshots__/min_armees_terre_marine_musee.test.tsx.snap new file mode 100644 index 00000000..e7611896 --- /dev/null +++ b/packages/~/moderations/ui/src/Actions/responses/__snapshots__/min_armees_terre_marine_musee.test.tsx.snap @@ -0,0 +1,19 @@ +// Bun Snapshot v1, https://goo.gl/fbAQLP + +exports[`returns error on 🦄 organization (min armée) email 1`] = ` +"Bonjour, + +Nous avons bien reçu votre demande de rattachement à l'organisation « 🦄 » sur ProConnect (anciennement : AgentConnect, MonComptePro). + +Nous pensons que vous avez fait erreur sur l'organisation à laquelle vous souhaitez rattacher votre compte utilisateur ProConnect. +L'organisation « 🦄 » est une organisation privée dont l'activité est la suivante : « 👾 ». +Ne souhaitiez-vous pas rattacher votre compte à XXXXXXX ? +Si tel est le cas, d'après nos recherches, XXXXXXXX n'apparaît pas dans le répertoire SIRENE, soit parce qu'elle n'est pas inscrite, soit parce qu'elle a choisi de ne pas diffuser ses informations en raison de la nature sensible de ses activités. + +Dans ce contexte, veuillez renouveler votre création de compte en le rattachant au : +MINISTERE DES ARMEES : https://annuaire-entreprises.data.gouv.fr/entreprise/ministere-des-armees-110090016. + +Bien cordialement, +L’équipe ProConnect. +" +`; diff --git a/packages/~/moderations/ui/src/Actions/responses/__snapshots__/teacher_academic_email.test.tsx.snap b/packages/~/moderations/ui/src/Actions/responses/__snapshots__/teacher_academic_email.test.tsx.snap new file mode 100644 index 00000000..6050104d --- /dev/null +++ b/packages/~/moderations/ui/src/Actions/responses/__snapshots__/teacher_academic_email.test.tsx.snap @@ -0,0 +1,18 @@ +// Bun Snapshot v1, https://goo.gl/fbAQLP + +exports[`returns invalid teacher email message 1`] = ` +"Bonjour, + +Votre demande pour rejoindre l’organisation « 🦄 » a été prise en compte sur https://app.moncomptepro.beta.gouv.fr. + +Votre adresse e-mail académique : « 💌 » ne vous permet pas de rattacher votre compte utilisateur MonComptePro au Ministère de l’Éducation Nationale et de la Jeunesse. + +En tant qu’enseignant, merci de bien vouloir créer votre compte à nouveau en le rattachant à l’une des organisations suivantes : + +- L’établissement scolaire dans lequel vous exercez, +- Le rectorat de votre Académie. + +Bien cordialement, +L’équipe ProConnect. +" +`; diff --git a/packages/~/moderations/ui/src/Actions/responses/already_signed.test.tsx b/packages/~/moderations/ui/src/Actions/responses/already_signed.test.tsx index 9584fbe3..c67bbcd1 100644 --- a/packages/~/moderations/ui/src/Actions/responses/already_signed.test.tsx +++ b/packages/~/moderations/ui/src/Actions/responses/already_signed.test.tsx @@ -17,7 +17,12 @@ test("returns all members", async () => { $decision_form: "", domain: "unicorn.xyz", moderation: { - organization: { cached_libelle: "🦄", id: 1, siret: "🦄 siret" }, + organization: { + cached_libelle: "🦄", + id: 1, + siret: "🦄 siret", + cached_libelle_categorie_juridique: "🍄", + }, user: { id: 42, given_name: "", email: "", family_name: "🧟" }, id: 1, moderated_at: "2011-11-11", diff --git a/packages/~/moderations/ui/src/Actions/responses/index.ts b/packages/~/moderations/ui/src/Actions/responses/index.ts index baa5901f..6b50836a 100644 --- a/packages/~/moderations/ui/src/Actions/responses/index.ts +++ b/packages/~/moderations/ui/src/Actions/responses/index.ts @@ -15,11 +15,13 @@ import * as link_with_chosen_organization from "./link_with_chosen_organization" import * as link_with_eduction_gouv_fr from "./link_with_eduction_gouv_fr"; import * as link_with_organization from "./link_with_organization"; import * as min_armees from "./min_armees"; +import * as min_armees_terre_marine_musee from "./min_armees_terre_marine_musee"; import * as missing_name from "./missing_name"; import * as mobilic from "./mobilic"; import * as name_incorrectly_entered from "./name_incorrectly_entered"; import * as occupation_incorrectly_entered from "./occupation_incorrectly_entered"; import * as occupation_incorrectly_entered_not_blocking from "./occupation_incorrectly_entered_not_blocking"; +import * as teacher_academic_email from "./teacher_academic_email"; import * as public_or_private_organization from "./public_or_private_organization"; import * as refusal_france_travail from "./refusal_france_travail"; import * as use_official_email from "./use_official_email"; @@ -49,7 +51,9 @@ export const reponse_templates = [ occupation_incorrectly_entered, min_armees, admin_centrale, + teacher_academic_email, link_with_chosen_organization, public_or_private_organization, refusal_france_travail, + min_armees_terre_marine_musee, ]; diff --git a/packages/~/moderations/ui/src/Actions/responses/min_armees_terre_marine_musee.test.tsx b/packages/~/moderations/ui/src/Actions/responses/min_armees_terre_marine_musee.test.tsx new file mode 100644 index 00000000..e9847c1b --- /dev/null +++ b/packages/~/moderations/ui/src/Actions/responses/min_armees_terre_marine_musee.test.tsx @@ -0,0 +1,33 @@ +// + +import { render_md } from "@~/app.ui/testing"; +import { expect, test } from "bun:test"; +import { context, type Values } from "../context"; +import min_armees_terre_marine_musee from "./min_armees_terre_marine_musee"; + +// + +test("returns error on 🦄 organization (min armée) email", async () => { + expect( + await render_md( + + + , + ), + ).toMatchSnapshot(); +}); + +function Response() { + return <>{min_armees_terre_marine_musee()}; +} diff --git a/packages/~/moderations/ui/src/Actions/responses/min_armees_terre_marine_musee.tsx b/packages/~/moderations/ui/src/Actions/responses/min_armees_terre_marine_musee.tsx new file mode 100644 index 00000000..2cd9645c --- /dev/null +++ b/packages/~/moderations/ui/src/Actions/responses/min_armees_terre_marine_musee.tsx @@ -0,0 +1,36 @@ +// + +import { useContext } from "hono/jsx"; +import { dedent } from "ts-dedent"; +import { context } from "../context"; + +export const label = + "Agent Min des Armées —> Terre armée, Marine nationale, Musée de la Marine"; + +export default function template() { + const { + moderation: { + organization: { + cached_libelle: organization_name, + cached_libelle_categorie_juridique, + }, + }, + } = useContext(context); + + return dedent` + Bonjour, + + Nous avons bien reçu votre demande de rattachement à l'organisation « ${organization_name} » sur ProConnect (anciennement : AgentConnect, MonComptePro). + + Nous pensons que vous avez fait erreur sur l'organisation à laquelle vous souhaitez rattacher votre compte utilisateur ProConnect. + L'organisation « ${organization_name} » est une organisation privée dont l'activité est la suivante : « ${cached_libelle_categorie_juridique} ». + Ne souhaitiez-vous pas rattacher votre compte à XXXXXXX ? + Si tel est le cas, d'après nos recherches, XXXXXXXX n'apparaît pas dans le répertoire SIRENE, soit parce qu'elle n'est pas inscrite, soit parce qu'elle a choisi de ne pas diffuser ses informations en raison de la nature sensible de ses activités. + + Dans ce contexte, veuillez renouveler votre création de compte en le rattachant au : + MINISTERE DES ARMEES : https://annuaire-entreprises.data.gouv.fr/entreprise/ministere-des-armees-110090016. + + Bien cordialement, + L’équipe ProConnect. + `; +} diff --git a/packages/~/moderations/ui/src/Actions/responses/teacher_academic_email.test.tsx b/packages/~/moderations/ui/src/Actions/responses/teacher_academic_email.test.tsx new file mode 100644 index 00000000..c062cfde --- /dev/null +++ b/packages/~/moderations/ui/src/Actions/responses/teacher_academic_email.test.tsx @@ -0,0 +1,31 @@ +// + +import { render_md } from "@~/app.ui/testing"; +import { expect, test } from "bun:test"; +import { context, type Values } from "../context"; +import teacher_academic_email from "./teacher_academic_email"; + +// + +test("returns invalid teacher email message", async () => { + expect( + await render_md( + + + , + ), + ).toMatchSnapshot(); +}); + +function Response() { + return <>{teacher_academic_email()}; +} diff --git a/packages/~/moderations/ui/src/Actions/responses/teacher_academic_email.tsx b/packages/~/moderations/ui/src/Actions/responses/teacher_academic_email.tsx new file mode 100644 index 00000000..3f1d76f7 --- /dev/null +++ b/packages/~/moderations/ui/src/Actions/responses/teacher_academic_email.tsx @@ -0,0 +1,33 @@ +// + +import { useContext } from "hono/jsx"; +import { dedent } from "ts-dedent"; +import { context } from "../context"; + +export const label = + "Enseignant : e-mail académique —> Min Edu Nat et Jeunesse"; + +export default function template() { + const { + moderation: { + organization: { cached_libelle: organization_name }, + user: { email }, + }, + } = useContext(context); + + return dedent` + Bonjour, + + Votre demande pour rejoindre l’organisation « ${organization_name} » a été prise en compte sur https://app.moncomptepro.beta.gouv.fr. + + Votre adresse e-mail académique : « ${email} » ne vous permet pas de rattacher votre compte utilisateur MonComptePro au Ministère de l’Éducation Nationale et de la Jeunesse. + + En tant qu’enseignant, merci de bien vouloir créer votre compte à nouveau en le rattachant à l’une des organisations suivantes : + + - L’établissement scolaire dans lequel vous exercez, + - Le rectorat de votre Académie. + + Bien cordialement, + L’équipe ProConnect. + `; +}