core: add placeholders for forms, add sign-up view
This commit is contained in:
		| @ -1,16 +1,22 @@ | ||||
| """passbook core authentication forms""" | ||||
| from logging import getLogger | ||||
|  | ||||
| from django import forms | ||||
| from django.core.exceptions import ValidationError | ||||
| from django.core.validators import validate_email | ||||
| from django.utils.translation import gettext_lazy as _ | ||||
|  | ||||
| from passbook.core.models import User | ||||
| from passbook.lib.config import CONFIG | ||||
|  | ||||
| LOGGER = getLogger(__name__) | ||||
|  | ||||
| class LoginForm(forms.Form): | ||||
|     """Allow users to login""" | ||||
|  | ||||
|     uid_field = forms.CharField() | ||||
|     password = forms.CharField(widget=forms.PasswordInput()) | ||||
|     title = _('Log in to your account') | ||||
|     uid_field = forms.CharField(widget=forms.TextInput(attrs={'placeholder': _('UID')})) | ||||
|     password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': _('Password')})) | ||||
|     remember_me = forms.BooleanField(required=False) | ||||
|  | ||||
|     def clean_uid_field(self): | ||||
| @ -18,3 +24,55 @@ class LoginForm(forms.Form): | ||||
|         if CONFIG.y('passbook.uid_fields') == ['email']: | ||||
|             validate_email(self.cleaned_data.get('uid_field')) | ||||
|         return self.cleaned_data.get('uid_field') | ||||
|  | ||||
| class SignUpForm(forms.Form): | ||||
|     """SignUp Form""" | ||||
|  | ||||
|     title = _('Sign Up') | ||||
|     first_name = forms.CharField(label=_('First Name'), | ||||
|                                  widget=forms.TextInput(attrs={'placeholder': _('First Name')})) | ||||
|     last_name = forms.CharField(label=_('Last Name'), | ||||
|                                 widget=forms.TextInput(attrs={'placeholder': _('Last Name')})) | ||||
|     username = forms.CharField(label=_('Username'), | ||||
|                                widget=forms.TextInput(attrs={'placeholder': _('Username')})) | ||||
|     email = forms.EmailField(label=_('E-Mail'), | ||||
|                              widget=forms.TextInput(attrs={'placeholder': _('E-Mail')})) | ||||
|     password = forms.CharField(label=_('Password'), | ||||
|                                widget=forms.PasswordInput(attrs={'placeholder': _('Password')})) | ||||
|     password_repeat = forms.CharField(label=_('Repeat Password'), | ||||
|                                       widget=forms.PasswordInput(attrs={ | ||||
|                                           'placeholder': _('Repeat Password') | ||||
|                                           })) | ||||
|     # captcha = ReCaptchaField( | ||||
|     #     required=(not settings.DEBUG and not settings.TEST), | ||||
|     #     private_key=Setting.get('recaptcha:private'), | ||||
|     #     public_key=Setting.get('recaptcha:public')) | ||||
|  | ||||
|     def __init__(self, *args, **kwargs): | ||||
|         super().__init__(*args, **kwargs) | ||||
|         # TODO: Dynamically add captcha here | ||||
|         # if not Setting.get_bool('recaptcha:enabled'): | ||||
|         #     self.fields.pop('captcha') | ||||
|  | ||||
|     def clean_username(self): | ||||
|         """Check if username is used already""" | ||||
|         username = self.cleaned_data.get('username') | ||||
|         if User.objects.filter(username=username).exists(): | ||||
|             LOGGER.warning("Username %s already exists", username) | ||||
|             raise ValidationError(_("Username already exists")) | ||||
|         return username | ||||
|  | ||||
|     def clean_email(self): | ||||
|         """Check if email is already used in django or other auth sources""" | ||||
|         email = self.cleaned_data.get('email') | ||||
|         # Check if user exists already, error early | ||||
|         if User.objects.filter(email=email).exists(): | ||||
|             LOGGER.debug("email %s exists in django", email) | ||||
|             raise ValidationError(_("Email already exists")) | ||||
|         return email | ||||
|  | ||||
|     def clean_password_repeat(self): | ||||
|         """Check if Password adheres to filter and if passwords matche""" | ||||
|         # TODO: Password policy? Via Plugin? via Policy? | ||||
|         # return check_password(self) | ||||
|         return self.cleaned_data.get('password_repeat') | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer