from django.conf import settings
from django.contrib.auth.models import User, check_password
-import md5
import MySQLdb
-
+import tools.phpass
"""
This auth backend allows django to authenticate against an external phpbb
specify the database name where phpbb lives.
"""
class PhpBBBackend:
+ def __init__(self):
+ self.hash = tools.phpass.PasswordHash()
+
def connect(self):
host = getattr(settings, 'PHPBB_DATABASE_HOST', settings.DATABASE_HOST)
port = getattr(settings, 'PHPBB_DATABASE_PORT', settings.DATABASE_PORT)
def check_login(self, username, password):
conn = self.connect()
+ prefix = getattr(settings, 'PHPBB_TABLE_PREFIX', '')
# Get some data
cursor = conn.cursor ()
- cursor.execute ("SELECT user_password,user_email FROM users WHERE username=%s", username)
+ cursor.execute ("SELECT user_password,user_email FROM %susers WHERE LOWER(username)=LOWER(%%s)" % prefix, username)
# No data? No login.
if (cursor.rowcount == 0):
row = cursor.fetchone()
conn.close()
- if (md5.new(password).hexdigest() == row[0]):
+ if (self.hash.check_password(password, row[0])):
return row[1]
else:
return False
except User.DoesNotExist:
return None
+# vim: set sts=4 sw=4 expandtab: