From d7a7d1e92ec2dd45aed0f7779df28e0c9698f432 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Tue, 30 Dec 2008 17:00:31 +0100 Subject: [PATCH] Community authentication --- gitadmin/auth.py | 29 +++++++++++++++++++++++++++++ gitadmin/settings.py | 4 ++++ 2 files changed, 33 insertions(+) create mode 100644 gitadmin/auth.py diff --git a/gitadmin/auth.py b/gitadmin/auth.py new file mode 100644 index 0000000..3fed0b4 --- /dev/null +++ b/gitadmin/auth.py @@ -0,0 +1,29 @@ +from django.contrib.auth.models import User +import psycopg2 + +class AuthBackend: + def authenticate(self, username=None, password=None): + conn = psycopg2.connect('host=wwwmaster.postgresql.org dbname=186_www user=auth_svc password=g7y3m9u8 sslmode=require') + try: + conn.set_client_encoding('UNICODE') + cur = conn.cursor() + cur.execute('SELECT * FROM community_login(%s,%s)', (username, password)) + row = cur.fetchall()[0] + finally: + conn.close() + + if row[1] == 1: + try: + user = User.objects.get(username=username) + except User.DoesNotExist: + # User doesn't exist yet + user = User(username=username, password='setmanually', email=row[3], first_name=row[2]) + user.save() + return user + return None + + def get_user(self, user_id): + try: + return User.objects.get(pk=user_id) + except User.DoesNotExist: + return None diff --git a/gitadmin/settings.py b/gitadmin/settings.py index 6f10317..8413c8c 100644 --- a/gitadmin/settings.py +++ b/gitadmin/settings.py @@ -80,6 +80,10 @@ INSTALLED_APPS = ( 'gitadmin.adm', ) +AUTHENTICATION_BACKENDS = ( + 'gitadmin.auth.AuthBackend', +) + LOGIN_URL = '/adm/login' -- 2.39.5