Переглянути джерело

Clarification of the registration process

- Added an "I am 14 years old" checkbox.
- The username now automatically matches the phone number (temporary stopper).
- Added small hints to the fields.
TonyKurts 1 місяць тому
батько
коміт
e262d1694b

+ 13 - 2
sharix_admin/forms/auth.py

@@ -7,11 +7,22 @@ from sharix_admin.forms import BaseForm
 
 class ShariXSignUpForm(BaseForm, UserCreationForm):
     """
-    Форма для регистрации пользователей.
+    Форма для регистрации пользователей. 
     """
+    def save(self, commit=True):
+        user = super().save(commit=False)
+        user.username = self.cleaned_data['phone_number'] # FIXME: Имя пользователя = номер телефона
+        if commit:
+            user.save()
+        return user
+
     class Meta:
         model = get_user_model()
-        fields = ('last_name', 'first_name', 'middle_name', 'phone_number', 'email', 'username')
+        fields = ('last_name', 'first_name', 'middle_name', 'phone_number', 'email')
+        labels = {
+            'middle_name': 'Отчество (не обязательно)',
+            'phone_number': 'Номер телефона (только цифры)',
+        }
 
 
 class ShariXLoginForm(BaseForm, AuthenticationForm):

+ 16 - 5
sharix_admin/templates/sharix_admin/auth/signup.html

@@ -13,6 +13,13 @@
             {% csrf_token %}
             {% include "sharix_admin/include/form.html" %}
             
+            <div class="form-check text-muted">
+                <input type="checkbox" class="form-check-input" id="checkbox-fourteen-years">
+                <label class="form-check-label" for="checkbox-fourteen-years">
+                    Мне есть 14 лет
+                </label>
+            </div>
+
             <div class="form-check text-muted">
                 <input type="checkbox" class="form-check-input" id="checkbox-user-agreement">
                 <label class="form-check-label" for="checkbox-user-agreement">
@@ -34,13 +41,17 @@
 <script>
     // Логика, запрещающая нажатие на кнопку "Зарегистрироваться", пока пользователь не согласится с "Пользовательским соглашением"
     document.addEventListener('DOMContentLoaded', function() {
-        const checkboxEl = document.getElementById('checkbox-user-agreement');
+        const checkboxEls = [
+            document.getElementById('checkbox-fourteen-years'),
+            document.getElementById('checkbox-user-agreement')
+        ];
         const submitBtnEl = document.getElementById('btn-submit-signup');
 
-        // Обработчик события изменения состояния чекбокса
-        checkboxEl.addEventListener('change', function() {
-            if (checkboxEl.checked) submitBtnEl.removeAttribute('disabled');
-            else submitBtnEl.setAttribute('disabled', 'disabled');
+        checkboxEls.forEach(checkboxEl => {
+            checkboxEl.addEventListener('change', function() {
+                if (checkboxEls.every(el => el.checked)) submitBtnEl.removeAttribute('disabled');
+                else submitBtnEl.setAttribute('disabled', 'disabled');
+            });
         });
     });
 </script>