snapshot: preserve auth invite flow and password reset UX cleanup
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
from django import forms
|
||||
from pathlib import Path
|
||||
from datetime import timedelta
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth import get_user_model, password_validation
|
||||
from django.contrib.auth.forms import AuthenticationForm, PasswordResetForm, SetPasswordForm
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import get_language, gettext as _
|
||||
from django.utils.translation import get_language, gettext as _, gettext_lazy
|
||||
|
||||
from .form_builder import apply_form_field_config
|
||||
from .models import EmployeeProfile, FormOption, OffboardingRequest, OnboardingRequest, WorkflowConfig
|
||||
@@ -98,14 +99,35 @@ HARDWARE_EXTRA_CHOICES = [('Smartphone', 'Smartphone'), ('Anderes', 'Anderes')]
|
||||
SOFTWARE_EXTRA_CHOICES = [('Adobe Acrobat Pro (Abonnement: Zusätzliche Kosten)', 'Adobe Acrobat Pro (Abonnement: Zusätzliche Kosten)'), ('Anderes', 'Anderes')]
|
||||
|
||||
|
||||
class AppAuthenticationForm(AuthenticationForm):
|
||||
username = forms.CharField(label=gettext_lazy('Benutzername'))
|
||||
password = forms.CharField(label=gettext_lazy('Passwort'), strip=False, widget=forms.PasswordInput(attrs={'autocomplete': 'current-password'}))
|
||||
|
||||
|
||||
class AppPasswordResetForm(PasswordResetForm):
|
||||
email = forms.EmailField(label=gettext_lazy('E-Mail-Adresse'))
|
||||
|
||||
|
||||
class AppSetPasswordForm(SetPasswordForm):
|
||||
new_password1 = forms.CharField(
|
||||
label=gettext_lazy('Neues Passwort'),
|
||||
strip=False,
|
||||
widget=forms.PasswordInput(attrs={'autocomplete': 'new-password'}),
|
||||
help_text=password_validation.password_validators_help_text_html(),
|
||||
)
|
||||
new_password2 = forms.CharField(
|
||||
label=gettext_lazy('Neues Passwort bestätigen'),
|
||||
strip=False,
|
||||
widget=forms.PasswordInput(attrs={'autocomplete': 'new-password'}),
|
||||
)
|
||||
|
||||
|
||||
class UserManagementCreateForm(forms.Form):
|
||||
first_name = forms.CharField(label=_('Vorname'), max_length=150, required=False)
|
||||
last_name = forms.CharField(label=_('Nachname'), max_length=150, required=False)
|
||||
username = forms.CharField(label=_('Benutzername'), max_length=150)
|
||||
email = forms.EmailField(label=_('E-Mail-Adresse'))
|
||||
role_key = forms.ChoiceField(label=_('Rolle'))
|
||||
password1 = forms.CharField(label=_('Passwort'), widget=forms.PasswordInput())
|
||||
password2 = forms.CharField(label=_('Passwort bestätigen'), widget=forms.PasswordInput())
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
@@ -130,20 +152,12 @@ class UserManagementCreateForm(forms.Form):
|
||||
raise forms.ValidationError(_('Ungültige Rolle.'))
|
||||
return role_key
|
||||
|
||||
def clean(self):
|
||||
cleaned = super().clean()
|
||||
password1 = cleaned.get('password1')
|
||||
password2 = cleaned.get('password2')
|
||||
if password1 and password2 and password1 != password2:
|
||||
self.add_error('password2', _('Die Passwörter stimmen nicht überein.'))
|
||||
return cleaned
|
||||
|
||||
def save(self):
|
||||
user_model = get_user_model()
|
||||
user = user_model.objects.create_user(
|
||||
username=self.cleaned_data['username'],
|
||||
email=self.cleaned_data['email'],
|
||||
password=self.cleaned_data['password1'],
|
||||
password=None,
|
||||
first_name=self.cleaned_data.get('first_name', ''),
|
||||
last_name=self.cleaned_data.get('last_name', ''),
|
||||
is_active=True,
|
||||
|
||||
Reference in New Issue
Block a user