Import subscribe_to_user_changes function to sample auth.py
authorMagnus Hagander <magnus@hagander.net>
Wed, 7 Jun 2023 19:38:16 +0000 (21:38 +0200)
committerMagnus Hagander <magnus@hagander.net>
Wed, 7 Jun 2023 19:38:16 +0000 (21:38 +0200)
This was used on git.postgresql.org, but hadn't been propagated
upstream.

tools/communityauth/sample/django/auth.py

index cbb41923136e48023a5c02f8435adfdeee4a06cb..bff5b620aa1da749328709044f8b1db240587613 100644 (file)
@@ -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.