From ca2cf16989c12050f2524124dd5ab83fe8e87d01 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Wed, 26 Feb 2020 18:11:40 +0100 Subject: [PATCH] Sync up community auth plugin to latest-and-greatest --- hamnadmin/hamnadmin/auth.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/hamnadmin/hamnadmin/auth.py b/hamnadmin/hamnadmin/auth.py index e8daa0b..4ae553b 100644 --- a/hamnadmin/hamnadmin/auth.py +++ b/hamnadmin/hamnadmin/auth.py @@ -30,9 +30,9 @@ import json import socket from urllib.parse import urlparse, urlencode, parse_qs import requests -from Crypto.Cipher import AES -from Crypto.Hash import SHA -from Crypto import Random +from Cryptodome.Cipher import AES +from Cryptodome.Hash import SHA +from Cryptodome import Random import time @@ -58,7 +58,7 @@ def login(request): r = Random.new() iv = r.read(16) encryptor = AES.new(SHA.new(settings.SECRET_KEY.encode('ascii')).digest()[:16], AES.MODE_CBC, iv) - cipher = encryptor.encrypt(s + ' ' * (16 - (len(s) % 16))) # pad to 16 bytes + cipher = encryptor.encrypt(s.encode('ascii') + b' ' * (16 - (len(s) % 16))) # pad to 16 bytes return HttpResponseRedirect("%s?d=%s$%s" % ( settings.PGAUTH_REDIRECT, @@ -133,13 +133,25 @@ def auth_receive(request): a different username than %s. This is almost certainly caused by some legacy data in our database. -Please send an email to webmaster@postgresql.eu, indicating the username +Please send an email to webmaster@postgresql.org, indicating the username and email address from above, and we'll manually merge the two accounts for you. We apologize for the inconvenience. """ % (data['e'][0], data['u'][0]), content_type='text/plain') + if getattr(settings, 'PGAUTH_CREATEUSER_CALLBACK', None): + res = getattr(settings, 'PGAUTH_CREATEUSER_CALLBACK')( + data['u'][0], + data['e'][0], + ['f'][0], + data['l'][0], + ) + # If anything is returned, we'll return that as our result. + # If None is returned, it means go ahead and create the user. + if res: + return res + user = User(username=data['u'][0], first_name=data['f'][0], last_name=data['l'][0], @@ -191,8 +203,9 @@ def user_search(searchterm=None, userid=None): else: q = {'s': searchterm} - r = requests.get('{0}search/'.format(settings.PGAUTH_REDIRECT), - params=q, + r = requests.get( + '{0}search/'.format(settings.PGAUTH_REDIRECT), + params=q, ) if r.status_code != 200: return [] -- 2.39.5