From ef5ae7db30960436a5b5a1ed728032df56409e17 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Wed, 7 Jun 2023 21:38:16 +0200 Subject: [PATCH] Import subscribe_to_user_changes function to sample auth.py This was used on git.postgresql.org, but hadn't been propagated upstream. --- tools/communityauth/sample/django/auth.py | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/communityauth/sample/django/auth.py b/tools/communityauth/sample/django/auth.py index cbb41923..bff5b620 100644 --- a/tools/communityauth/sample/django/auth.py +++ b/tools/communityauth/sample/django/auth.py @@ -308,6 +308,30 @@ def user_search(searchterm=None, userid=None): return j +# Subscribe to any changes about this user on the community auth upstream +def subscribe_to_user_changes(userid): + socket.setdefaulttimeout(10) + + body = json.dumps({ + 'u': userid, + }) + + h = hmac.digest( + base64.b64decode(settings.PGAUTH_KEY), + msg=bytes(body, 'utf-8'), + digest='sha512', + ) + + # Ignore the result code, just post it + requests.post( + '{0}subscribe/'.format(settings.PGAUTH_REDIRECT), + data=body, + headers={ + 'X-pgauth-sig': base64.b64encode(h), + }, + ) + + # Import a user into the local authentication system. Will initially # make a search for it, and if anything other than one entry is returned # the import will fail.