Skip to content

Commit c0307da

Browse files
committed
upgraded authentication for all domain.
1 parent f435352 commit c0307da

File tree

236 files changed

+105758
-33
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

236 files changed

+105758
-33
lines changed

MANIFEST.in

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
recursive-include django_single_auth/templates *
2+
recursive-include django_single_auth/static *

build/lib/django_single_auth/__init__.py

Whitespace-only changes.

build/lib/django_single_auth/admin.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.contrib import admin
2+
3+
# Register your models here.

build/lib/django_single_auth/apps.py

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django.apps import AppConfig
2+
3+
4+
class DjangoSingleAuthConfig(AppConfig):
5+
name = 'django_single_auth'
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from django.utils.deprecation import MiddlewareMixin
2+
from .server import session
3+
import urllib.parse as urlparse
4+
from urllib.parse import parse_qs
5+
6+
7+
class SameDomainServer(MiddlewareMixin):
8+
9+
def process_response(self, request, response):
10+
try:
11+
parsed = urlparse.urlparse(response.url)
12+
if parse_qs(parsed.query).get('token') is not None:
13+
session.update(request)
14+
except:
15+
pass
16+
return response

build/lib/django_single_auth/migrations/__init__.py

Whitespace-only changes.
+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.db import models
2+
3+
# Create your models here.

build/lib/django_single_auth/server/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from django.conf import settings
2+
from django.contrib.sessions.models import Session
3+
from django.db import transaction
4+
5+
6+
def update(request):
7+
try:
8+
if request.user.is_authenticated and request.session.session_key is not None:
9+
with transaction.atomic():
10+
# print(request.session.session_data)
11+
master_session = Session.objects.get(session_key=str(request.session.session_key))
12+
print(master_session.session_key)
13+
for i in settings.DATABASES:
14+
if i != 'default':
15+
try:
16+
sync_session = Session.objects.using(i).get(session_key=master_session.session_key)
17+
sync_session.session_data = master_session.session_data
18+
sync_session.expire_date = master_session.expire_date
19+
sync_session.save()
20+
except Session.objects.using(i).model.DoesNotExist:
21+
Session.objects.using(i).create(session_key=master_session.session_key,
22+
session_data=master_session.session_data,
23+
expire_date=master_session.expire_date)
24+
except:
25+
print('already have session key')
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from cryptography.fernet import Fernet
2+
import base64
3+
import logging
4+
import traceback
5+
from django.conf import settings
6+
7+
8+
# this is your "password/ENCRYPT_KEY". keep it in settings.py file
9+
# key = Fernet.generate_key()
10+
11+
def encrypt(txt):
12+
try:
13+
# convert integer etc to string first
14+
txt = str(txt)
15+
# get the key from settings
16+
cipher_suite = Fernet(settings.ENCRYPT_KEY) # key should be byte
17+
# #input should be byte, so convert the text to byte
18+
encrypted_text = cipher_suite.encrypt(txt.encode('ascii'))
19+
# encode to urlsafe base64 format
20+
encrypted_text = base64.urlsafe_b64encode(encrypted_text).decode("ascii")
21+
return encrypted_text
22+
except Exception as e:
23+
# log the error if any
24+
logging.getLogger("error_logger").error(traceback.format_exc())
25+
return None
26+
27+
28+
def decrypt(txt):
29+
try:
30+
# base64 decode
31+
txt = base64.urlsafe_b64decode(txt)
32+
cipher_suite = Fernet(settings.ENCRYPT_KEY)
33+
decoded_text = cipher_suite.decrypt(txt).decode("ascii")
34+
return decoded_text
35+
except Exception as e:
36+
# log the error
37+
logging.getLogger("error_logger").error(traceback.format_exc())
38+
return None

build/lib/django_single_auth/server/url_manager.py

Whitespace-only changes.

0 commit comments

Comments
 (0)