diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c48487..ec9730a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## v1.2.7 + +* Fix: issue if the user isn't defined by username field #25. + ## v1.2.6 * Adding Django 5.0 to test matrix and pypi classifiers diff --git a/passkeys/FIDO2.py b/passkeys/FIDO2.py index af3e266..76dc81d 100644 --- a/passkeys/FIDO2.py +++ b/passkeys/FIDO2.py @@ -4,6 +4,7 @@ import fido2.features from django.conf import settings +from django.contrib.auth import get_user_model from django.http import JsonResponse from django.utils import timezone from django.views.decorators.csrf import csrf_exempt @@ -22,7 +23,10 @@ def enable_json_mapping(): def getUserCredentials(user): - return [AttestedCredentialData(websafe_decode(uk.token)) for uk in UserPasskey.objects.filter(user__username = user)] + User = get_user_model() + username_field = User.USERNAME_FIELD + filter_args = {"user__"+username_field : user} + return [AttestedCredentialData(websafe_decode(uk.token)) for uk in UserPasskey.objects.filter(**filter_args)] def getServer(request=None): @@ -61,8 +65,8 @@ def reg_begin(request): auth_attachment = getattr(settings,'KEY_ATTACHMENT', None) registration_data, state = server.register_begin({ u'id': urlsafe_b64encode(request.user.username.encode("utf8")), - u'name': request.user.username, - u'displayName': request.user.username, + u'name': request.user.get_username(), + u'displayName': request.user.get_full_name() }, getUserCredentials(request.user), authenticator_attachment = auth_attachment, resident_key_requirement=fido2.webauthn.ResidentKeyRequirement.PREFERRED) request.session['fido2_state'] = state return JsonResponse(dict(registration_data)) diff --git a/setup.py b/setup.py index 82a2449..95941c6 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name='django-passkeys', - version='1.2.6', + version='1.2.7b1', description='A Django Authentication Backend for Passkeys', long_description=open("README.md").read(), long_description_content_type="text/markdown", @@ -24,8 +24,8 @@ include_package_data=True, zip_safe=False, # because we're including static files classifiers=[ - "Development Status :: 5 - Production/Stable", - #"Development Status :: 4 - Beta", + #"Development Status :: 5 - Production/Stable", + "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 2.0",