Subject: UNB authentication backend for Django
Not a plugin for UNB but for Django, a python web framework. With this backend, Forum users can be authenticated at django driven sites, e.g CMS, galleries, etc. I hope those kinds of Plugins are allowed here.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.contrib.auth.models import User, check_password
from django.db import connection
from random import choice
from string import ascii_letters
from md5 import md5
def make_unb_pw(klartextkennwort, salt=None):
'''erstellt aus dem angegebenen Klartextkennwort einen zum UNB passenden hash'''
if not salt:
salt = choice(ascii_letters) + choice(ascii_letters)
passwort_md5 = md5(klartextkennwort).hexdigest()
pwhash = md5(salt+passwort_md5).hexdigest()
return pwhash[0:16] + salt + pwhash[16:]
def check_unb_pw(klartextkennwort, pwhash):
'''überprüft ob sich aus dem Klartextkennwort der pwhash erzeugen lässt'''
return make_unb_pw(klartextkennwort, pwhash[16:18]) == pwhash
class UNBauthbackend:
'''authentifiziert User gegen die Datenbank des Unclassified Newsboards
http://newsboard.unclassified.de
Übernommen werden nur die Usernamen und Mailadressen. Registrierung
und Änderungen im Profil werden nach wie vor über das Forum gemacht.
Das Passwort wird nach wie vor aus der Forendatenbank geholt'''
def authenticate(self, username=None, password=None):
cursor = connection.cursor()
(passworthash, email) = cursor.execute('SELECT Password, EMail from unb1_Users where Name = %s', [username]).fetchone()
if check_unb_pw(password, passworthash):
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
user = User(username=username, password='aus der unb-db', email=email)
user.is_staff=False
user.is_superuser=False
user.save()
return user
else:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
# -*- coding: utf-8 -*-
from django.contrib.auth.models import User, check_password
from django.db import connection
from random import choice
from string import ascii_letters
from md5 import md5
def make_unb_pw(klartextkennwort, salt=None):
'''erstellt aus dem angegebenen Klartextkennwort einen zum UNB passenden hash'''
if not salt:
salt = choice(ascii_letters) + choice(ascii_letters)
passwort_md5 = md5(klartextkennwort).hexdigest()
pwhash = md5(salt+passwort_md5).hexdigest()
return pwhash[0:16] + salt + pwhash[16:]
def check_unb_pw(klartextkennwort, pwhash):
'''überprüft ob sich aus dem Klartextkennwort der pwhash erzeugen lässt'''
return make_unb_pw(klartextkennwort, pwhash[16:18]) == pwhash
class UNBauthbackend:
'''authentifiziert User gegen die Datenbank des Unclassified Newsboards
http://newsboard.unclassified.de
Übernommen werden nur die Usernamen und Mailadressen. Registrierung
und Änderungen im Profil werden nach wie vor über das Forum gemacht.
Das Passwort wird nach wie vor aus der Forendatenbank geholt'''
def authenticate(self, username=None, password=None):
cursor = connection.cursor()
(passworthash, email) = cursor.execute('SELECT Password, EMail from unb1_Users where Name = %s', [username]).fetchone()
if check_unb_pw(password, passworthash):
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
user = User(username=username, password='aus der unb-db', email=email)
user.is_staff=False
user.is_superuser=False
user.save()
return user
else:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None

tiax
Show profile
Link to this post