authn: provide a single field for username and phone number (#72449) #41
No reviewers
Labels
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: entrouvert/authentic#41
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/72449-login-authn-single-identifier-field"
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?
Rien de bien méchant.
J’ai oublié qu’on peut restreindre encore la recherche lorsque l’usager saisit un numéro au format international dans cette mire de login, je corrige.
ea90060bb0
toe719810125
C’est corrigé dans la branche, la PR est prete à etre relue.
e719810125
tob755e874d2
2/3 détails.
@ -47,13 +50,17 @@ class ModelBackend(BaseModelBackend):
try:
if app_settings.A2_ACCEPT_EMAIL_AUTHENTICATION and UserModel._meta.get_field('email'):
queries.append(models.Q(**{'email__iexact': username}))
except models.FieldDoesNotExist:
Tu peux virer les deux FieldDoesNotExist ça doit date d'une époque où je pensais réutiliser authentic avec un autre model User. Ce train est parti. (ou alors j'ai oublié un truc mais normalement le champ email et phone sont toujours là).
@ -57,0 +58,4 @@
if (pn := parse_phone_number(username)) and is_valid_number(pn):
query = {'phone__endswith': str(pn.national_number)}
if username.startswith(('00', '+')):
query.update({'phone__startswith': f'+{pn.country_code}'})
A priori si on un format international on doit pouvoir normaliser et recherche un exact match... en fait y a que deux cas, soit on a parsé un numéro local interprété comme un numéro du code pays par défaut et très très rarement c'est pas bon, soit le numéro était au format international dès le départ et ça ne peut être que ça donc exact match.
Pour l'instant je ferai un exact match dans tous les cas, les gens qui ne sont pas dans le code pays par défaut doivent taper un numéro au format international, point.
@ -745,8 +745,13 @@ def login_password_login(request, authenticator, *args, **kwargs):
form.fields['password'].widget.attrs['autofocus'] = True
else:
form.fields['username'].widget.attrs['autofocus'] = not (bool(context.get('block_index')))
phone_authn = app_settings.A2_ACCEPT_PHONE_AUTHENTICATION and get_user_model()._meta.get_field('phone')
get_user_model()._meta.get_field('phone')
c'est toujours vrai.b755e874d2
to990d975553
Ok, d’accord avec tout, c’est pris en compte dans la branche.
Ok.
990d975553
toe1fa32b83e