diff --git a/rowers/backends.py b/rowers/backends.py new file mode 100644 index 00000000..55ae2ca1 --- /dev/null +++ b/rowers/backends.py @@ -0,0 +1,14 @@ +from rules.permissions import ObjectPermissionBackend +from rowers.models import User + +class MyObjectPermissionBackend(ObjectPermissionBackend): + def user_can_authenticate(self, user): + return getattr(user, "is_active", True) + + def get_user(self, user_id): + try: + user = User.objects.get(pk=user_id) + except User.DoesNotExist: + return None + return user if self.user_can_authenticate(user) else None + diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index a4fcfdf7..6833bcc6 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/views/paymentviews.py b/rowers/views/paymentviews.py index db8ea50e..f42b476e 100644 --- a/rowers/views/paymentviews.py +++ b/rowers/views/paymentviews.py @@ -2,7 +2,7 @@ from django.utils.encoding import force_bytes, force_str from rowers.tokens import account_activation_token from django.contrib.sites.shortcuts import get_current_site from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode - +from django.contrib.auth.backends import ModelBackend from rowers.views.statements import * from django.core.mail import EmailMessage @@ -817,7 +817,7 @@ def useractivate(request, uidb64, token): # pragma: no cover messages.info( request, 'Thank you for your email confirmation. You are now signed in to your account.') - login(request, user, backend=settings.AUTHENTICATION_BACKENDS[0]) + login(request, user, backend='django.contrib.auth.backends.ModelBackend') url = reverse('workouts_view') # if user.rower.rowerplan == 'freecoach': # url+='?next=/rowers/me/teams' diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 0076b4d8..facdb512 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -90,10 +90,10 @@ INSTALLED_APPS = [ AUTHENTICATION_BACKENDS = ( #'oauth2_provider.backends.OAuth2Backend', # Uncomment following if you want to access the admin - 'rules.permissions.ObjectPermissionBackend', - 'django.contrib.auth.backends.ModelBackend', 'django.contrib.auth.backends.ModelBackend', 'django.contrib.auth.backends.RemoteUserBackend', + 'rowers.backends.MyObjectPermissionBackend', + #'rules.permissions.ObjectPermissionBackend', ) MIDDLEWARE = [