Skip to content

Commit

Permalink
migrate to django 3
Browse files Browse the repository at this point in the history
  • Loading branch information
MathieuB1 committed Mar 6, 2020
1 parent c664ba7 commit ff6a4b5
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 10 deletions.
29 changes: 24 additions & 5 deletions django-notifier/myapp/app/token_auth.py
@@ -1,6 +1,7 @@
import jwt, re
import traceback
from channels.auth import AuthMiddlewareStack
from channels.db import database_sync_to_async
from django.contrib.auth.models import AnonymousUser
from django.conf import LazySettings
from jwt import InvalidSignatureError, ExpiredSignatureError, DecodeError
Expand All @@ -11,6 +12,25 @@

from django.db import close_old_connections

@database_sync_to_async
def close_connections():
close_old_connections()

@database_sync_to_async
def get_user(user_jwt):
try:
return User.objects.get(id=user_jwt)
except User.DoesNotExist:
return AnonymousUser()

@database_sync_to_async
def get_session(session_key):
try:
return Session.objects.get(session_key=session_key)
except Session.DoesNotExist:
return AnonymousUser()


class TokenAuthMiddleware:
"""
Token authorization middleware for Django Channels 2
Expand All @@ -20,7 +40,7 @@ def __init__(self, inner):

def __call__(self, scope):
# Close old database connections to prevent usage of timed out connections
close_old_connections()
close_connections()

# Login with JWT
try:
Expand All @@ -33,7 +53,7 @@ def __call__(self, scope):
token,
settings.SECRET_KEY,
)
scope['user'] = User.objects.get(id=user_jwt['user_id'])
scope['user'] = get_user(user_jwt['user_id'])
return self.inner(scope)

except (InvalidSignatureError, KeyError, ExpiredSignatureError, DecodeError):
Expand All @@ -52,11 +72,10 @@ def __call__(self, scope):
for name, value in scope['headers']:
if name == b'cookie':
session_key = value.decode('utf-8').split('sessionid=')[1]

session = Session.objects.get(session_key=session_key)
session = get_session(session_key)
session_data = session.get_decoded()
uid = session_data.get('_auth_user_id')
scope['user'] = User.objects.get(id=uid)
scope['user'] = get_user(uid)
break

# No credentials found so Set Anonymous user
Expand Down
4 changes: 2 additions & 2 deletions django-notifier/requirements.txt
@@ -1,6 +1,6 @@
# REST Api
Django==2.2.11
djangorestframework==3.9.3
Django==3.0.4
djangorestframework==3.11.0
djangorestframework_jwt==1.11.0
coreapi==2.3.3
openapi-codec==1.3.2
Expand Down
2 changes: 1 addition & 1 deletion django-rest-swagger/myapp/app/urls.py
Expand Up @@ -16,7 +16,7 @@
router = DefaultRouter()
# Adding the KOREK view
router.register(r'products', views.ProductViewSet)
router.register(r'register', views.UserRegisterViewSet, base_name='user-register')
router.register(r'register', views.UserRegisterViewSet, basename='user-register')
router.register(r'groups', views.GroupSerializerOwnerViewSet)
router.register(r'acknowlegment', views.GroupAcknowlegmentViewSet)
router.register(r'password_reset', views.PasswordResetViewSet)
Expand Down
4 changes: 2 additions & 2 deletions django-rest-swagger/requirements.txt
@@ -1,6 +1,6 @@
# REST Api
Django==2.2.11
djangorestframework==3.9.3
Django==3.0.4
djangorestframework==3.11.0
djangorestframework_jwt==1.11.0
coreapi==2.3.3
openapi-codec==1.3.2
Expand Down

0 comments on commit ff6a4b5

Please sign in to comment.