Пример #1
0
    def save(self, **kwargs):
        email = self.cleaned_data["email"]
        token_generator = kwargs.get("token_generator",
                                     default_token_generator)

        for user in User.objects.filter(email__iexact=email):
            temp_key = token_generator.make_token(user)

            # save it to the password reset model
            password_reset = PasswordReset(user=user, temp_key=temp_key)
            password_reset.save()

            current_site = Site.objects.get_current()
            domain = unicode(current_site.domain)

            # send the password reset email
            subject = _("Password reset email sent")
            message = render_to_string(
                "account/password_reset_key_message.txt", {
                    "user": user,
                    "uid": int_to_base36(user.id),
                    "temp_key": temp_key,
                    "domain": domain,
                })
            send_mail(subject, message, settings.DEFAULT_FROM_EMAIL,
                      [user.email])
        return self.cleaned_data["email"]
Пример #2
0
def generate_reset_email(username):
    email = ""
    #send email to email address associated with their username
    user = User.objects.filter(username=username)
    if user == None or len(user) <> 1:
        return False
    else:
        email = user[0].email

    pin = ''.join(
        random.choice("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
        for _ in range(49))
    url = "{}PasswordFunctions/?function=resetpinsuccessful&username={}&pin={}".format(
        settings.BASE_URL, username, pin)

    message = "Please Click the following URL to reset your password:\n%s" % (
        url)

    #add reset stats to database
    current_timestamp = default = datetime.datetime.now()
    exptime = datetime.datetime.now() + datetime.timedelta(minutes=30)
    expire_timestamp = exptime
    passwordreset = PasswordReset(username=username,
                                  resetpin=pin,
                                  time_issued=current_timestamp,
                                  time_expire=expire_timestamp,
                                  used=False)
    passwordreset.save()

    send_email(email, "ChatDashboard Password Reset", message)

    return True
def generate_reset_email(username):
    email = ""
    #send email to email address associated with their username
    user = User.objects.filter(username=username)
    if user == None or len(user) <> 1:
        return False
    else:
        email = user[0].email
    

    pin = ''.join(random.choice("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") for _ in range(49))
    url = "{}PasswordFunctions/?function=resetpinsuccessful&username={}&pin={}".format(settings.BASE_URL, username, pin)
    
    message = "Please Click the following URL to reset your password:\n%s" %(url)

    #add reset stats to database
    current_timestamp =  default=datetime.datetime.now()
    exptime = datetime.datetime.now() + datetime.timedelta(minutes=30) 
    expire_timestamp = exptime
    passwordreset = PasswordReset(username=username, resetpin=pin, time_issued=current_timestamp, time_expire=expire_timestamp, used=False )
    passwordreset.save()

    send_email(email, "ChatDashboard Password Reset", message)

    return True
Пример #4
0
def password_reset(request):
    if request.method == "POST":
        form = RequestPasswordResetForm(request.POST)
        if form.is_valid():
            user = form.get_user()
            if not user.is_active:
                messages.warning(request, _("Your account is still inactive! You won't be able to log in until you reactivate with the link sent by e-mail."))
            expire = datetime.now() + timedelta(days=1)
            variable_part = expire.strftime("%Y-%m-%d %H:%i:%s") + str(int(random.random() * 10))
            h = sha_constructor(settings.SECRET_KEY + variable_part).hexdigest()[:24]
            
            # make sure the hash is unique enough
            reset = PasswordReset(user=user, expire=expire, h=h)
            try:
                reset.save()
            except IntegrityError:
                extrapart = int(random.random() * 10)
                h = sha_constructor(settings.SECRET_KEY + variable_part + extrapart).hexdigest()[:24]
                reset = PasswordReset(user=user, expire=expire, h=h)
                reset.save()
            
            #send email
            nickname = user.get_profile().forum_nickname
            email = user.email 
            if not email:
                email = '*****@*****.**'
            domain = Site.objects.get_current().domain
            url = "http://%s%s?h=%s" % (
                    domain, 
                    reverse(do_password_reset),
                    h
                    )
            
            text_content = _("""Hello %(nickname)s, \n
You or someone else has requested a password reset for your Modelbrouwers.nl account.
This request will expire after 24 hours.\n
Go to %(url)s to complete your password reset.\n
Sincerely,\n
The Modelbrouwers.nl staff""" % {
                                'nickname': nickname,
                                'url': url
                                }
                            )
            
            html_content = _(TEMPLATE_RESET_PW_HTML % {
                                'nickname': nickname,
                                'url': url
                                }
                            )
            subject, from_email = _("Modelbrouwers.nl password reset"), '*****@*****.**'
            msg = EmailMultiAlternatives(subject, text_content, from_email, [email])
            msg.attach_alternative(html_content, "text/html")
            msg.send()
            messages.success(request, _("An e-mail was sent to '%(email)s' with a link to reset your pasword.") % {'email': email})
            return HttpResponseRedirect(reverse(custom_login))
    else:
        form = RequestPasswordResetForm()
    return render(request, 'general/password_reset.html', {'form': form})
Пример #5
0
    def save(self, **kwargs):
        email = self.cleaned_data["email"]
        token_generator = kwargs.get("token_generator", default_token_generator)

        for user in User.objects.filter(email__iexact=email):
            temp_key = token_generator.make_token(user)

            # save it to the password reset model
            password_reset = PasswordReset(user=user, temp_key=temp_key)
            password_reset.save()

            current_site = Site.objects.get_current()
            domain = unicode(current_site.domain)

            # send the password reset email
            subject = _("Password reset email sent")
            message = render_to_string("account/password_reset_key_message.txt", {
                "user": user,
                "uid": int_to_base36(user.id),
                "temp_key": temp_key,
                "domain": domain,
                })
            send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [user.email])
        return self.cleaned_data["email"]
Пример #6
0
 def save(self):
     self.success = True
     reset = PasswordReset(key = str(uuid.uuid4()), user = self.user)
     reset.save()
     send_reset(self.user, reset)