def confirm(self, password): if self.confirmed: return False self.user.password = encrypt_password(password) self.user.save() self.confirmed = True self.save() return True
def registration(request): if request.user.is_authenticated(): return redirect("frontpage") page_title = u"Registration" breadcrumbs = [{"url": reverse("users:registration"), "title": page_title}] form = RegistrationForm() if request.method == "POST": form = RegistrationForm(request.POST) if form.is_valid(): data = form.cleaned_data email = data["email"] username = "******" % (User.objects.aggregate(Max("id"))["id__max"] + 1) email_taken = False email_pending = False if User.objects.filter(email=email).exists(): email_taken = True user = User.objects.get(email=email) if RegistrationConfirmation.objects.filter(user=user, confirmed=False).count(): email_pending = True if email_pending: resend_confirmation_url = reverse("users:registration_resend") message = u"A registration request for the user account with email <em>%(email)s</em> needs to be confirmed. <a href=\"%(url)s?email=%(email)s\">Click here</a> to re-send the confirmation email." message = message % dict(email=email, url=resend_confirmation_url) messages.warning(request, message) return direct_to_template(request, "users/registration.html", locals()) elif email_taken: reset_password_url = reverse("users:reset_password_init") message = u"User with email <em>%(email)s</em> is registered already. If you forgot your password you can <a href=\"%(url)s\">click here</a> to reset it." message = message % dict(email=email, url=reset_password_url) messages.warning(request, message) return direct_to_template(request, "users/registration.html", locals()) else: password = encrypt_password(data["password"]) user = User(username=username, first_name=u"", last_name=u"", email=email, password=password, is_active=True) user.save() Profile.objects.create(user=user) confirmation = RegistrationConfirmation(user=user, confirmed=False) confirmation.save() confirmation.send_confirmation() if data["newsletter"]: subscribe.delay(email) messages.success(request, u"Confirmation email was sent to you.") backend = BcryptBackend() user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__) auth_login(request, user) return redirect("users:welcome") else: messages.error(request, u"Please correct the indicated errors.") return direct_to_template(request, "users/registration.html", locals())
def test_encrypt_unicode_password(self): # Test encrypt unicode password condition. password = unicode(self.get_test_password()) result = encrypt_password(password) self.assertTrue(result.startswith(BCRYPT_PREFIX))
def save(self, *args, **kwargs): super(ChangePasswordForm, self).save(*args, **kwargs) user = self.instance user.password = encrypt_password(self.cleaned_data["new_password"]) user.save()
def test_encrypt_password(self): # Test encypt password function. password = self.get_test_password() result = encrypt_password(password) self.assertTrue(result.startswith(BCRYPT_PREFIX))