diff --git a/app/assets/images/data_providers/aife.jpeg b/app/assets/images/data_providers/aife.jpeg new file mode 100644 index 000000000..640e19d05 Binary files /dev/null and b/app/assets/images/data_providers/aife.jpeg differ diff --git a/app/models/authorization_request/api_captchetat.rb b/app/models/authorization_request/api_captchetat.rb new file mode 100644 index 000000000..311670424 --- /dev/null +++ b/app/models/authorization_request/api_captchetat.rb @@ -0,0 +1,13 @@ +class AuthorizationRequest::APICaptchEtat < AuthorizationRequest + include AuthorizationExtensions::BasicInfos + include AuthorizationExtensions::CadreJuridique + include AuthorizationExtensions::PersonalData + include AuthorizationExtensions::GDPRContacts + + add_document :maquette_projet, content_type: ['application/pdf'], size: { less_than: 10.megabytes } + + add_attributes :date_prevue_mise_en_production, + :volumetrie_approximative + + contact :contact_technique, validation_condition: -> { need_complete_validation?(:contacts) } +end diff --git a/config/authorization_definitions.yml b/config/authorization_definitions.yml index 196ad369e..0d8e840f5 100644 --- a/config/authorization_definitions.yml +++ b/config/authorization_definitions.yml @@ -173,3 +173,10 @@ shared: public: true cgu_link: 'https://presaje.sga.defense.gouv.fr/cgu-dln1f' provider: 'ministere_des_armees' + + api_captchetat: + name: "API CaptchEtat" + description: "Générer un CAPTCHA pour sécuriser un service en ligne" + public: true + cgu_link: '/cgus/cgu_api_captchetat_v_1_2.pdf' + provider: 'aife' diff --git a/config/authorization_request_forms.yml b/config/authorization_request_forms.yml index 5c4125a24..fc96363b9 100644 --- a/config/authorization_request_forms.yml +++ b/config/authorization_request_forms.yml @@ -167,3 +167,11 @@ La plateforme, mise en place pour permettre le dépôt de ces aides publiques et - name: 'personal_data' - name: 'legal' - name: 'contacts' + + api-captchetat: + authorization_request: 'APICaptchEtat' + steps: + - name: 'basic_infos' + - name: 'personal_data' + - name: 'legal' + - name: 'contacts' diff --git a/config/data_providers.yml b/config/data_providers.yml index 302455495..24a8d1804 100644 --- a/config/data_providers.yml +++ b/config/data_providers.yml @@ -16,3 +16,8 @@ shared: name: Ministere Des Armees logo: minarm.jpg link: https://api.gouv.fr/les-api/api-service-national + aife: + name: Agence pour l'Information Financière de l'État + logo: aife.jpeg + link: https://aife.economie.gouv.fr/ + diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb index 71bea823a..7a4dee7a2 100644 --- a/config/initializers/inflections.rb +++ b/config/initializers/inflections.rb @@ -19,4 +19,6 @@ inflect.acronym 'HubEE' inflect.acronym 'DC' inflect.acronym 'DILA' + + inflect.acronym 'CaptchEtat' end diff --git a/docs/new_provider.md b/docs/new_provider.md index 7120bc9d2..f0eb529b1 100644 --- a/docs/new_provider.md +++ b/docs/new_provider.md @@ -157,10 +157,6 @@ end Vis-à-vis de la factory, il faut se rendre dans le fichier [`spec/factories/authorization_requests.rb`](../spec/factories/authorization_requests.rb) et compléter avec le nom de la classe en underscore. -Et pour le test, il faut modifier -[`spec/models/authorization_request_spec.rb`](../spec/models/authorization_request_spec.rb) -et ajouter dans le test de factory le trait de la factory pour bien vérifier que notre couche modèle est OK. - ## 3. Configurer les formulations via l'I18n Il faut à minima définir les noms des attributs définis dans le modèle. Cela se @@ -215,7 +211,7 @@ Il faut créer le fichier `mon_api.html.erb` dans le dossier [`app/views/authorization_request_forms/`](../app/views/authorization_request_forms/) avec le markup minimal: ```erb -<%= render 'authorization_requests/build/header' %> +<%= render 'authorization_request_forms/build/header' %> <%= render partial: 'authorization_request_forms/shared/organization' %> diff --git a/features/habilitations/api_captchetat.feature b/features/habilitations/api_captchetat.feature new file mode 100644 index 000000000..65155a47f --- /dev/null +++ b/features/habilitations/api_captchetat.feature @@ -0,0 +1,35 @@ +# language: fr + +Fonctionnalité: Soumission d'une demande d'habilitation API CaptchEtat + Contexte: + Sachant que je suis un demandeur + Et que je me connecte + + @javascript + Scénario: Je soumets une demande d'habilitation + Quand je démarre une nouvelle demande d'habilitation "API CaptchEtat" + + * je renseigne les infos de bases du projet + * je remplis "Date de mise en production" avec "25/12/2042" + * je clique sur "Suivant" + + * je renseigne les infos concernant les données personnelles + * je clique sur "Suivant" + + * je remplis "Précisez la nature et les références du texte vous autorisant à traiter les données" avec "Article 42" + * je remplis "URL du texte relatif au traitement" avec "https://legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006430983&cidTexte=LEGITEXT000006070721" + * je clique sur "Suivant" + + * je clique sur "Suivant" + + * je renseigne les informations des contacts RGPD + * je remplis les informations du contact "Contact technique" avec : + | Nom | Prénom | Email | Téléphone | Fonction | + | Dupont | Marc | dupont.marc@gouv.fr | 08366565603 | Technique | + * je clique sur "Suivant" + + * j'adhère aux conditions générales + * je clique sur "Soumettre la demande d'habilitation" + + Alors il y a un message de succès contenant "soumise avec succès" + Et je suis sur la page "Accueil" diff --git a/public/cgus/cgu_api_captchetat_v_1_2.pdf b/public/cgus/cgu_api_captchetat_v_1_2.pdf new file mode 100644 index 000000000..6d24092a3 Binary files /dev/null and b/public/cgus/cgu_api_captchetat_v_1_2.pdf differ diff --git a/spec/factories/authorization_requests.rb b/spec/factories/authorization_requests.rb index 0f3566900..71aea0cf0 100644 --- a/spec/factories/authorization_requests.rb +++ b/spec/factories/authorization_requests.rb @@ -227,5 +227,14 @@ api_service_national form_uid { 'api-service-national-obligation-service-national' } end + + trait :api_captchetat do + type { 'AuthorizationRequest::APICaptchEtat' } + + form_uid { 'api-captchetat' } + with_basic_infos + with_personal_data + with_cadre_juridique + end end end