Conservation de la next_url tout au long de l’enregistrement par numéro de téléphone (#72441) #64
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/72441-phone-registration-next-url"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Je pense qu’on doit pouvoir attraper au passage le même comportement pour la ré-initialisation de mot de passe, le code qui gère la création et la ré-initialisation étant assez factorisé pour cela.
3f05251e32
to46fba8856a
46fba8856a
to15f3a13474
15f3a13474
to5cf8ddf8f0
5cf8ddf8f0
to04674d24fe
04674d24fe
to4bcbfc15b5
WIP: Conservation de la next_url tout au long de l’enregistrement par numéro de téléphone (#72441)to Conservation de la next_url tout au long de l’enregistrement par numéro de téléphone (#72441)Bon, déjà mettons-nous d’accord sur l’approche pour la création de compte, ensuite l’extrapolation à la ré-initialisation de mot de passe sera rapide.
Une approche proposée ici en stockant le contenu de la
next_url
dans l’objet SMSCode, puisqu’on fait déjà quelque chose de similaire dans l’objetToken
(utilisé pour la création de compte quelque soit le moyen, email ou téléphone).C'est cryptique comme du authentic (
set_home_url
du grand art), quelques questions/remarques mais j'ai testé et ça fonctionne.(je me demande un peu dans quelle mesure la next-url n'aurait pas pu être passée explicitement tout au long du parcours, puisqu'il est continu contrairement au parcours d'inscription via courriel où passer par la db est nécessaire)
@ -836,3 +836,3 @@
created = models.DateTimeField(verbose_name=_('Creation date'), auto_now_add=True)
expires = models.DateTimeField(verbose_name=_('Expires'))
sent = models.BooleanField(default=False, verbose_name=_('SMS code sent'))
next_url = models.URLField(verbose_name=_('Next URL'), null=True, blank=True, default=None)
Je crois que c'est plutôt une mauvaise pratique de mettre null=True sur un champ texte (plutôt mettre juste default='')
Ok, j’ignorais cela. Je fais le changement ou alors j’abandonne carrément ce champ pour passer la next-url dans la querystring tout du long, comme évoqué plus haut.
@ -757,3 +757,3 @@
)
params = {REDIRECT_FIELD_NAME: next_url}
return make_url('registration_register', params=params)
return make_url('registration_register', params=params, next_url=next_url, sign_next_url=True)
Pourquoi y a-t-il besoin de ça ? (vs la création par email où pas besoin)
Parce qu’en imposant l’URL signée on s’épargne le cas de petits malins qui récupéreraient des listes d’usagers et envoient des mails du genre “Pour bénéficier du nouveau service machin de votre collectivité, créez-vous un compte à l’adresse
https://authentic.collectivité/register?next=<url-du-site-foireux>
.”Je pense qu’à terme on pourra l’imposer aussi pour l’enregistrement par email, mais actuellement il y a trop d’existant de ce côté là pour le passer en douce dans cette PR. Ça doit faire l’objet d’une PR à part pour l’existant, je crois.
@ -1308,6 +1314,8 @@ class InputSMSCodeView(cbv.ValidateCSRFMixin, FormView):
self.code = models.SMSCode.objects.get(url_token=token)
except models.SMSCode.DoesNotExist:
return HttpResponseBadRequest(_('Invalid request'))
self.next_url = self.code.next_url or utils_misc.select_next_url(request, None)
Dans quel cas le
or utils_misc.select_next_url(request, None)
s'exécute ?Un bout de code qui reste (de cas limites avérés ou imaginaires de ma part, où la next_url changerait en cours de parcours) avant que soit prise la décision d’imposer la signature. Je retire ce bout de code qui n’est plus nécessaire.
Au moment de l’écriture de la PR, ce choix me paraissait clair, notamment dans le fait que certaines des vues sont partagées avec l’enregistrement par email. À relire le code maintenant ce n’est plus si clair. Je vais voir si on a intérêt à passer cette url en querystring tout du long.
7d34eac7e4
to91cf8fcaad
91cf8fcaad
to8421a7384d
8421a7384d
to8571c56ec4
8571c56ec4
tob31361d02b
Voilà, remarques prises en compte, c’est plus simple ainsi en effet.