forked from uncloud/uncloud
70 lines
3.1 KiB
Python
70 lines
3.1 KiB
Python
|
import logging
|
||
|
|
||
|
from allauth.account.forms import SignupForm, ChangePasswordForm, ResetPasswordKeyForm, SetPasswordForm
|
||
|
from django import forms as d_forms
|
||
|
from django.conf import settings
|
||
|
from django.utils.translation import gettext_lazy as _
|
||
|
from .ungleich_ldap import LdapManager
|
||
|
|
||
|
logger = logging.getLogger(__name__)
|
||
|
|
||
|
class MySignupForm(SignupForm):
|
||
|
first_name = d_forms.CharField(max_length=30)
|
||
|
last_name = d_forms.CharField(max_length=30)
|
||
|
|
||
|
def custom_signup(self, request, user):
|
||
|
user.first_name = self.cleaned_data["first_name"]
|
||
|
user.last_name = self.cleaned_data["last_name"]
|
||
|
user.save()
|
||
|
if settings.LDAP_ENABLED:
|
||
|
ldap_manager = LdapManager()
|
||
|
try:
|
||
|
user_exists_in_ldap, entries = ldap_manager.check_user_exists(user.username)
|
||
|
except Exception:
|
||
|
logger.exception("Exception occur while searching for user in LDAP")
|
||
|
else:
|
||
|
if not user_exists_in_ldap:
|
||
|
ldap_manager.create_user(user.username, user.password, user.first_name, user.last_name, user.email)
|
||
|
|
||
|
class MyResetPasswordKeyForm(ResetPasswordKeyForm):
|
||
|
def save(self):
|
||
|
ldap_manager = LdapManager()
|
||
|
try:
|
||
|
user_exists_in_ldap, entries = ldap_manager.check_user_exists(self.user.username)
|
||
|
if not user_exists_in_ldap:
|
||
|
super(MyResetPasswordKeyForm, self).save()
|
||
|
else:
|
||
|
if ldap_manager.change_password(entries[0].entry_dn, self.cleaned_data["password1"]):
|
||
|
super(MyResetPasswordKeyForm, self).save()
|
||
|
except Exception:
|
||
|
logger.exception("Exception occur while searching for user in LDAP")
|
||
|
raise d_forms.ValidationError(_("An error occurred, please try again later"))
|
||
|
|
||
|
class MyChangePasswordForm(ChangePasswordForm):
|
||
|
def save(self):
|
||
|
ldap_manager = LdapManager()
|
||
|
try:
|
||
|
user_exists_in_ldap, entries = ldap_manager.check_user_exists(self.user.username)
|
||
|
if not user_exists_in_ldap:
|
||
|
super(MyChangePasswordForm, self).save()
|
||
|
else:
|
||
|
if ldap_manager.change_password(self.user.username, self.cleaned_data["password1"]):
|
||
|
super(MyChangePasswordForm, self).save()
|
||
|
except Exception:
|
||
|
logger.exception("Exception occur while searching for user in LDAP")
|
||
|
raise d_forms.ValidationError(_("An error occurred, please try again later"))
|
||
|
|
||
|
class MySetPasswordForm(SetPasswordForm):
|
||
|
def save(self):
|
||
|
ldap_manager = LdapManager()
|
||
|
try:
|
||
|
user_exists_in_ldap, entries = ldap_manager.check_user_exists(self.user.username)
|
||
|
if not user_exists_in_ldap:
|
||
|
super(MySetPasswordForm, self).save()
|
||
|
else:
|
||
|
if ldap_manager.change_password(self.user.username, self.cleaned_data["password1"]):
|
||
|
super(MySetPasswordForm, self).save()
|
||
|
except Exception:
|
||
|
logger.exception("Exception occur while searching for user in LDAP")
|
||
|
raise d_forms.ValidationError(_("An error occurred, please try again later"))
|