43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
# accounts/forms.py
|
|
from django import forms
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth import authenticate
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class RegisterForm(forms.ModelForm):
|
|
password = forms.CharField(widget=forms.PasswordInput)
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = ['email', 'phone_number', 'password']
|
|
|
|
def clean_email(self):
|
|
phone_number = self.cleaned_data.get('phone_number')
|
|
if User.objects.filter(phone_number=phone_number).exists():
|
|
raise forms.ValidationError("phone_number is already registered.")
|
|
return phone_number
|
|
|
|
def save(self, commit=True):
|
|
user = super().save(commit=False)
|
|
user.set_password(self.cleaned_data['password'])
|
|
if commit:
|
|
user.save()
|
|
return user
|
|
|
|
|
|
class LoginForm(forms.Form):
|
|
username = forms.CharField()
|
|
password = forms.CharField(widget=forms.PasswordInput)
|
|
|
|
def clean(self):
|
|
cleaned_data = super().clean()
|
|
username = cleaned_data.get('username')
|
|
password = cleaned_data.get('password')
|
|
user = authenticate(username=username, password=password)
|
|
if not user:
|
|
raise forms.ValidationError("Invalid credentials.")
|
|
cleaned_data['user'] = user
|
|
return cleaned_data
|