diff --git a/bookwyrm/migrations/0037_auto_20210118_1900.py b/bookwyrm/migrations/0037_auto_20210118_1900.py new file mode 100644 index 00000000..9b26c411 --- /dev/null +++ b/bookwyrm/migrations/0037_auto_20210118_1900.py @@ -0,0 +1,22 @@ +# Generated by Django 3.0.7 on 2021-01-18 19:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0036_annualgoal'), + ] + + operations = [ + migrations.AlterModelOptions( + name='shelfbook', + options={'ordering': ('-created_date',)}, + ), + migrations.AlterField( + model_name='user', + name='email', + field=models.EmailField(max_length=254, unique=True), + ), + ] diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 6697b1b8..fed58306 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -25,6 +25,7 @@ from . import fields, Review class User(OrderedCollectionPageMixin, AbstractUser): ''' a user who wants to read books ''' username = fields.UsernameField() + email = models.EmailField(unique=True) key_pair = fields.OneToOneField( 'KeyPair', diff --git a/bookwyrm/views/authentication.py b/bookwyrm/views/authentication.py index 30632bf8..0fdee798 100644 --- a/bookwyrm/views/authentication.py +++ b/bookwyrm/views/authentication.py @@ -32,7 +32,14 @@ class Login(View): login_form = forms.LoginForm(request.POST) localname = login_form.data['localname'] - username = '%s@%s' % (localname, DOMAIN) + if '@' in localname: # looks like an email address to me + email = localname + try: + username = models.User.objects.get(email=email) + except models.User.DoesNotExist: # maybe it's a full username? + username = localname + else: + username = '%s@%s' % (localname, DOMAIN) password = login_form.data['password'] user = authenticate(request, username=username, password=password) if user is not None: