Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MyCustomUser(AbstractBaseUser):
- email = models.EmailField(max_length=50, verbose_name='email', unique=True)
- first_name = models.CharField( max_length=15,blank=False)
- last_name = models.CharField( max_length=15,blank=True)
- slug = models.SlugField(null=True, unique=True)
- is_staff = models.BooleanField()
- is_active = models.BooleanField(default=True)
- is_admin = models.BooleanField(default=False)
- objects = UserManager()
- USERNAME_FIELD = 'email'
- REQUIRED_FIELDS = []
- def get_full_name(self):
- full_name = '{0} {1}'.format(self.first_name, self.last_name)
- return full_name.strip()
- def get_short_name(self):
- return self.first_name
- def has_perm(self, perm, obj=None):
- return True
- def has_module_perms(self, app_label):
- return True
- @property
- def is_staff(self):
- return self.is_admin
- def __str__(self):
- return self.first_name
- class SignUpForm(UserCreationForm):
- first_name = forms.CharField(widget=forms.TextInput(
- attrs={'class':'form-control', 'placeholder':'First Name'}))
- last_name = forms.CharField(widget=forms.TextInput(
- attrs={'class':'form-control','placeholder':'Last Name'}))
- email = forms.EmailField(widget=forms.EmailInput(
- attrs={'class':'form-control', 'placeholder':'Email'}))
- password1 = forms.CharField(widget=forms.PasswordInput(
- attrs={'class':'form-control', 'placeholder':'Password'}))
- password2 = forms.CharField(widget=forms.PasswordInput(
- attrs={'class':'form-control', 'placeholder':'Repeat the password'}))
- class Meta:
- model = MyCustomUser
- fields = ['first_name','last_name','email', 'password1', 'password2']
- def sign_up(request):
- form = SignUpForm()
- if request.method == 'POST':
- form = SignUpForm(request.POST)
- if form.is_valid():
- user = form.save(commit=False)
- #create instance of first_name an last_name
- full_name = '{0} {1}' .format(user.first_name, user.last_name)
- #create user slug with full_name
- user.slug = slugify(full_name)
- user.is_active = True
- user.save()
- email = form.cleaned_data.get('email')
- raw_password = form.cleaned_data.get('password1')
- site = get_current_site(request)
- message = render_to_string('jogos/acc_active.html',{
- 'user':user,
- 'domain': site.domain,
- 'uid': urlsafe_base64_encode(force_bytes(user.pk)),
- 'token': default_token_generator.make_token(user),
- })
- mail_subject = 'Activate your account'
- to_email = form.cleaned_data.get('email')
- email = EmailMessage(mail_subject, message, to=[to_email])
- email.send()
- user = authenticate(email=email, password=raw_password)
- if user is not None:
- login(request, user)
- if request.user.is_authenticated():
- return HttpResponseRedirect(reverse_lazy('jogos:question-list'))
- else:
- form = SignUpForm()
- return render(request, 'jogos/sign_up.html', {'form':form})
- class MyCustomBackend(object):
- def authenticate(self, request, email=None, password=None, **kwargs):
- try:
- user = MyCustomUser.objects.get(email=email)
- if user.check_password(user.password):
- return user
- else:
- return None
- except MyCustomUser.DoesNotExist:
- return None
- def get_user(self, user_id):
- try:
- return MyCustomUser.objects.get(pk=user_id)
- except MyCustomUser.DoesNotExist:
- return None
Add Comment
Please, Sign In to add comment