1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from django import forms
- from django.contrib.auth import get_user_model
- from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, UsernameField
- from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm
- from django.contrib.auth.models import Group
- from sharix_admin.forms.base import BaseForm
- #TODO fix path
- from core.utils.ldap import LDAPOperations
- class ShariXSignUpForm(BaseForm, UserCreationForm):
- """
- Форма для регистрации пользователей.
- """
- ldap_ops = LDAPOperations()
- def save(self, commit=True):
-
- user = super().save(commit=False)
- user.username = self.cleaned_data['phone_number'] # FIXME: Имя пользователя = номер телефона
- user.id = self.cleaned_data['phone_number'] # FIXME: Имя пользователя = номер телефона
- # TODO Fix LDAP checks - better to insert in cleaned_data or smth like this
- if self.ldap_ops.check_attribute('uid', user.phone_number):
- raise forms.ValidationError(
- f"Phone number {user.phone_number} is not available (in use)",
- code='phone_number_exists_ldap'
- )
- if self.ldap_ops.check_attribute('mail', user.email):
- raise forms.ValidationError(
- f"Email {user.email} is not available (in use)",
- code='email_exists_ldap')
- if commit:
- self.ldap_ops.add_user(user)
- # self.ldap_ops.set_password(user.username, user.password)
- self.ldap_ops.add_to_group(user.username, "CLIENT")
- user.save()
- # user.groups.add(Group.objects.get(id=51)) # Добавляем всех пользователей по умолчанию в группу CLIENT
- return user
- class Meta:
- model = get_user_model()
- fields = ('last_name', 'first_name', 'middle_name', 'phone_number', 'email')
- labels = {
- 'middle_name': 'Отчество (не обязательно)',
- 'phone_number': 'Номер телефона (только цифры)',
- }
- class ShariXLoginForm(BaseForm, AuthenticationForm):
- """
- Форма для авторизации пользователей.
- """
- pass
- class ShariXResetPasswordForm(BaseForm, PasswordResetForm):
- pass
- class ShariXResetPasswordConfirmForm(BaseForm, SetPasswordForm):
- ldap_ops = LDAPOperations()
- def save(self, commit=True):
- password = self.cleaned_data["new_password1"]
- #ldap_ops.set_password(user.username, user.password)
- self.user.set_password(password)
- if commit:
- self.ldap_ops.set_password(self.user.phone_number, self.user.password)
- self.user.save()
- return self.user
|