mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
* Added support for migrations * Big refactoring of the admin code done: Support for SHA256 algorithm to store passwords (fix #195) done: admin models refactoring (fix #196)
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
from modoboa.admin.models import User
|
|
|
|
class SimpleBackend:
|
|
|
|
supports_object_permissions = False
|
|
supports_anonymous_user = False
|
|
supports_inactive_user = False
|
|
|
|
def authenticate(self, username=None, password=None):
|
|
try:
|
|
user = User.objects.get(username=username)
|
|
except User.DoesNotExist:
|
|
return None
|
|
if not user.check_password(password):
|
|
return None
|
|
return user
|
|
|
|
def get_user(self, user_id):
|
|
try:
|
|
return User.objects.get(pk=user_id)
|
|
except User.DoesNotExist:
|
|
return None
|
|
|
|
try:
|
|
from django_auth_ldap.backend import LDAPBackend as orig_LDAPBackend, _LDAPUser
|
|
from modoboa.admin.models import User
|
|
|
|
class LDAPBackend(orig_LDAPBackend):
|
|
|
|
def get_or_create_user(self, username, ldap_user):
|
|
"""
|
|
This must return a (User, created) 2-tuple for the given LDAP user.
|
|
username is the Django-friendly username of the user. ldap_user.dn is
|
|
the user's DN and ldap_user.attrs contains all of their LDAP attributes.
|
|
"""
|
|
return User.objects.get_or_create(
|
|
username__iexact=username,
|
|
defaults={'username': username.lower()}
|
|
)
|
|
|
|
def get_user(self, user_id):
|
|
user = None
|
|
|
|
try:
|
|
user = User.objects.get(pk=user_id)
|
|
_LDAPUser(self, user=user) # This sets user.ldap_user
|
|
except User.DoesNotExist:
|
|
pass
|
|
|
|
return user
|
|
|
|
except ImportError:
|
|
pass
|