From e18f7350d232e4f7205b4ec01848d09342be2418 Mon Sep 17 00:00:00 2001 From: Toni Bagur Date: Tue, 10 Dec 2019 14:59:07 +0100 Subject: [PATCH 1/2] Adding the option to use a custom user manager to retrieve the user from cognito without having to create a custom user model --- src/django_cognito_jwt/backend.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/django_cognito_jwt/backend.py b/src/django_cognito_jwt/backend.py index 2a86351..3f5f35d 100644 --- a/src/django_cognito_jwt/backend.py +++ b/src/django_cognito_jwt/backend.py @@ -6,6 +6,8 @@ from django.utils.translation import ugettext as _ from rest_framework import exceptions from rest_framework.authentication import BaseAuthentication, get_authorization_header +from django.utils.module_loading import import_string + from django_cognito_jwt.validator import TokenError, TokenValidator @@ -28,10 +30,21 @@ def authenticate(self, request): except TokenError: raise exceptions.AuthenticationFailed() - USER_MODEL = self.get_user_model() - user = USER_MODEL.objects.get_or_create_for_cognito(jwt_payload) + custom_user_manager = self.get_custom_user_manager() + if custom_user_manager: + user = custom_user_manager.get_or_create_for_cognito(jwt_payload) + else: + USER_MODEL = self.get_user_model() + user = USER_MODEL.objects.get_or_create_for_cognito(jwt_payload) return (user, jwt_token) + def get_custom_user_manager(self): + result = None + custom_user_manager_path = getattr(settings, "COGNITO_USER_MANAGER", False) + if(custom_user_manager_path): + result = import_string(custom_user_manager_path)() + return result + def get_user_model(self): user_model = getattr(settings, "COGNITO_USER_MODEL", settings.AUTH_USER_MODEL) return django_apps.get_model(user_model, require_ready=False) From d3d5dc147979ac325081384e006f91fc8869e56b Mon Sep 17 00:00:00 2001 From: Toni Bagur Date: Wed, 3 Jul 2024 18:46:43 +0200 Subject: [PATCH 2/2] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 463f827..e71f60c 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ ] tests_require = [ - 'coverage==.4.4.2', + 'coverage==4.4.2', 'pytest==3.3.2', 'pytest-cov==2.5.1', 'pytest-django==3.1.2',