From 0e3b5c60b45ac8181ec918e1d9db0328fd0b0393 Mon Sep 17 00:00:00 2001 From: Jezeniel Zapanta Date: Tue, 7 Nov 2017 13:21:03 +0800 Subject: [PATCH 1/2] Fixes #290 -- Pass request object on authenticate() Django 1.11 introduced def authenticate(request, ...). This would be useful for some authentications with additional data. i.e. multiple user types. --- rest_framework_jwt/compat.py | 10 +++++++++- rest_framework_jwt/serializers.py | 7 ++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/rest_framework_jwt/compat.py b/rest_framework_jwt/compat.py index 93e7898d..83803e70 100644 --- a/rest_framework_jwt/compat.py +++ b/rest_framework_jwt/compat.py @@ -1,4 +1,5 @@ -from django.contrib.auth import get_user_model +import django +from django.contrib.auth import authenticate as dj_authenticate, get_user_model from rest_framework import serializers @@ -35,3 +36,10 @@ def get_username(user): username = user.username return username + + +def authenticate(request=None, **credentials): + if django.version < (1, 11): + return dj_authenticate(**credentials) + else: + return dj_authenticate(request=request, **credentials) diff --git a/rest_framework_jwt/serializers.py b/rest_framework_jwt/serializers.py index 12b10a44..f6c0703d 100644 --- a/rest_framework_jwt/serializers.py +++ b/rest_framework_jwt/serializers.py @@ -3,10 +3,10 @@ from calendar import timegm from datetime import datetime, timedelta -from django.contrib.auth import authenticate, get_user_model +from django.contrib.auth import get_user_model from django.utils.translation import ugettext as _ from rest_framework import serializers -from .compat import Serializer +from .compat import Serializer, authenticate from rest_framework_jwt.settings import api_settings from rest_framework_jwt.compat import get_username_field, PasswordField @@ -47,7 +47,8 @@ def validate(self, attrs): } if all(credentials.values()): - user = authenticate(**credentials) + request = self.context.get('request') + user = authenticate(request=request, **credentials) if user: if not user.is_active: From 20594c55e5637fea6bb73554078ef88c0efba42f Mon Sep 17 00:00:00 2001 From: Jezeniel Zapanta Date: Tue, 7 Nov 2017 14:18:53 +0800 Subject: [PATCH 2/2] Fix trivial bug. --- rest_framework_jwt/compat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework_jwt/compat.py b/rest_framework_jwt/compat.py index 83803e70..b69375c8 100644 --- a/rest_framework_jwt/compat.py +++ b/rest_framework_jwt/compat.py @@ -39,7 +39,7 @@ def get_username(user): def authenticate(request=None, **credentials): - if django.version < (1, 11): + if django.VERSION < (1, 11): return dj_authenticate(**credentials) else: return dj_authenticate(request=request, **credentials)