diff options
Diffstat (limited to 'forums/forms.py')
-rw-r--r-- | forums/forms.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/forums/forms.py b/forums/forms.py index 2e3a6d1..5a93b5f 100644 --- a/forums/forms.py +++ b/forums/forms.py @@ -1,6 +1,20 @@ from django import forms +from django.contrib.auth import login, logout, authenticate class UserLoginForm(forms.Form): username = forms.CharField() password = forms.CharField(widget=forms.PasswordInput()) + def clean(self): + cleaned_data = self.cleaned_data + username = cleaned_data.get('username') + password = cleaned_data.get('password') + if username is None or password is None: + raise forms.ValidationError("Invalid username or password") + user = authenticate(username=username, password=password) + if not user: + raise forms.ValidationError("Invalid username or password") + if not user.is_active: + raise forms.ValidationError("User is blocked") + cleaned_data['user'] = user + return cleaned_data |