Beispiel #1
0
def recover(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/')
    else:
        if request.method == 'POST':
            form = RecoveryForm(request.POST)
            if form.is_valid():
                email = form.cleaned_data['email']
                users = User.objects.filter(email=email)

                if len(users) == 0:
                    messages.error(request, _(u"That email is not registered."))
                    return HttpResponseRedirect('/')

                user = users[0]
                user.save()

                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                email_message = create_password_recovery_message(email, user.username, request.META['HTTP_HOST'], token)

                send_mail(_(u'Account recovery'), email_message, settings.STUDLAN_FROM_MAIL, [email,])

                messages.success(request, _('A recovery link has been sent to ') + email)

                return HttpResponseRedirect('/')
            else:
                form = RecoveryForm(request.POST, auto_id=True, error_class=InlineSpanErrorList)
        else:
            form = RecoveryForm()

        return render(request, 'auth/recover.html', {'form': form})
Beispiel #2
0
def recover(request, event=None):
    if request.user.is_authenticated():
        return redirect('root', event=event)
    else:
        if request.method == 'POST':
            form = RecoveryForm(request.POST)
            if form.is_valid():
                email = form.cleaned_data['email'].lower()
                users = SiteUser.objects.filter(email=email)

                if len(users) == 0:
                    messages.error(request, "That email is not registered.")
                    return redirect('root', event=event)

                user = users[0]
                user.save()
    
                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                email_message = u"""
You have requested a password recovery for the account bound to %s.

Username: %s

If you did not ask for this password recovery, please ignore this email.

Otherwise, click the link below to reset your password;
http://%s/%s/auth/set_password/%s/

Note that tokens have a valid lifetime of 24 hours. If you do not use this
link within 24 hours, it will be invalid, and you will need to use the password
recovery option again to get your account verified.
""" % (email, user.username, request.META['HTTP_HOST'], event, token)


                send_mail('Account recovery', email_message, settings.REGISTER_FROM_MAIL, [email,])

                messages.success(request, 'A recovery link has been sent to %s.' % email)

                return redirect('root', event=event)
            else:
                form = RecoveryForm(request.POST, auto_id=True)
        else:
            form = RecoveryForm()

        return render(request, 'auth/recover.html', {'form': form, 'event': event})
Beispiel #3
0
def recover(request):
    if request.user.is_authenticated():
        messages.error(request, _(u'You can\'t do that while logged in.'))
        return redirect('/')

    if request.method == 'POST':
        form = RecoveryForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data['email']
            users = User.objects.filter(email__iexact=email)

            if users.count() == 0:
                messages.error(
                    request,
                    _(u'No users are registered with that email address.'))
                return redirect('/')

            # Send recovery email to all associated users
            for user in users.all():
                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                link = request.build_absolute_uri(
                    reverse('auth_set_password', args=[token]))
                context = {
                    'link': link,
                    'username': user.username,
                    'email': user.email,
                }
                txt_message = render_to_string(
                    'auth/email/recover_account.txt', context,
                    request).strip()
                html_message = render_to_string(
                    'auth/email/recover_account.html', context,
                    request).strip()
                send_mail(
                    subject=_(u'Account recovery'),
                    from_email=settings.STUDLAN_FROM_MAIL,
                    recipient_list=[user.email],
                    message=txt_message,
                    html_message=html_message,
                )

            messages.success(
                request,
                _(u'A recovery link has been sent to all users with email address "{email}".'
                  ).format(email=email))
            return redirect('/')
        else:
            form = RecoveryForm(request.POST,
                                auto_id=True,
                                error_class=InlineSpanErrorList)
    else:
        form = RecoveryForm()

    return render(request, 'auth/recover.html', {'form': form})
Beispiel #4
0
def recover(request):
    log = logging.getLogger(__name__)
    if request.user.is_authenticated:
        messages.error(
            request, _('Gjenoppretning av passord krever at du er logget ut.'))
        return HttpResponseRedirect('/')
    else:
        if request.method == 'POST':
            form = RecoveryForm(request.POST)
            if form.is_valid():
                email_string = form.cleaned_data['email']
                emails = Email.objects.filter(email=email_string)

                if len(emails) == 0:
                    messages.error(
                        request,
                        _('Denne eposten er ikke registrert i våre systemer.'))
                    return HttpResponseRedirect('/')

                email = emails[0]

                # Create the registration token
                token = uuid.uuid4().hex
                try:
                    rt = RegisterToken(user=email.user,
                                       email=email.email,
                                       token=token)
                    rt.save()
                    log.info('Successfully registered token for %s' %
                             request.user)
                except IntegrityError as ie:
                    log.error('Failed to register token for "%s" due to "%s"' %
                              (request.user, ie))
                    raise ie

                email_context = {}
                email_context['email'] = email.email
                email_context['username'] = email.user.username
                set_password_url = reverse('auth_set_password', args=(token, ))
                email_context['reset_url'] = request.build_absolute_uri(
                    set_password_url)

                email_message = render_to_string(
                    'auth/email/password_reset_tpl.txt', email_context)

                send_mail(_('Gjenoppretting av passord'), email_message,
                          settings.DEFAULT_FROM_EMAIL, [
                              email.email,
                          ])

                messages.success(
                    request,
                    _('En lenke for gjenoppretting har blitt sendt til %s.') %
                    email.email)

                return HttpResponseRedirect('/')
            else:
                form = RecoveryForm(request.POST, auto_id=True)
        else:
            form = RecoveryForm()

        return render(request, 'auth/recover.html', {'form': form})