* add base controller for public api
* add dossiers controller with basic checks
* create the dossier
* ensure content-type is json
* prefill dossier with given values
* mark a dossier as prefilled
When a dossier is prefilled, it's allowed not to have a user.
Plus, we add a secure token to the dossier, which we will need later to set a
user after sign in / sign up.
* set user as owner of an orphan prefilled dossier
When a visitor comes from the dossier_url answered by the public api,
the dossier is orphan:
- when the user is already authenticated: they become the owner
- when the user is not authenticated: they can sign in / sign up / france_connect
and then they become the owner
So here is the procedure:
- allow to sign in / sign up / france connect when user is unauthenticated
- set dossier ownership when the dossier is orphan
- check dossier ownership when the dossier is not
- redirect to brouillon path when user is signed in and owner
* mark the dossier as prefilled when it's prefilled
(even with a GET request, because it will be useful later on, for
exmample in order to cleanup the unused prefilled dossiers)
* system spec: prefilling dossier with post request
* store prefill params in session
Instead of using query params on /dossier/new, we assume the user comes
from /commencer/:path, which is the new prefill link.
There, we store the prefill params in session, and use them to prefill
the dossier when creating it, in /dossiers/new.
* spec: cover the case
* review: serialize with json instead of yaml
* review: rename method
* review: store only query params
* review: comment why we dont override already stored params
/app/controllers/carte_controller.rb
- l10/11 @dossier.update_attributes()
- l27 : le @dossier ne semble pas necessaire
- l32 : update attributes Ajouter :
def dossier_id params[:dossier_id] end
/spec/controllers/carte_controller_spec.rb
- l 11/16 : utiliser nouvelle syntaxe pour les hashs : get :show, dossier_id: dossier_id
- l32 bancal : Commentaire.last.id, en theorie tu n'as jamais besoin d'écrire de requête sql dans tes tests l36 subject { Commentaire.last }
- l64, le cas ou c'est en erreur n'est pas testé (le géocodeur renvoie nil)