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})
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})
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})
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})