def forgot_password(request):
    reset_message = 'You will receive an email with reset instructions shortly'
    not_found_message = 'We could not find a user for that email address'

    if request.method == 'POST':
        form = forms.ForgotPasswordForm(request.POST)

        if form.is_valid():
            email = form.cleaned_data['email']
            user = KagisoUser.get_user_from_auth_db(email)

            if user:
                msg = EmailMessage()
                msg.to = [user.email]
                msg.from_email = get_setting(settings.AUTH_FROM_EMAIL, request)
                msg.subject = 'Password Reset'
                msg.template = get_setting(
                    settings.PASSWORD_RESET_EMAIL_TEMPLATE, request)
                msg.substitution_data = {
                    'link':
                    request.build_absolute_uri(reverse('reset_password')),
                    'token': user.generate_reset_password_token(),
                    'user_id': user.id
                }
                msg.send()

                messages.success(request, reset_message)
                return HttpResponseRedirect(reverse('forgot_password'))
            else:
                messages.error(request, not_found_message)
                return HttpResponseRedirect(reverse('forgot_password'))
    else:
        form = forms.ForgotPasswordForm()

    return render(request, 'kagiso_auth/forgot_password.html', {'form': form})
def _send_confirmation_email(user, request):
    msg = EmailMessage()
    msg.to = [user.email]
    msg.from_email = get_setting(settings.AUTH_FROM_EMAIL, request)
    msg.subject = 'Confirm Your Account'
    msg.template = get_setting(settings.SIGN_UP_EMAIL_TEMPLATE, request)
    msg.substitution_data = {
        'link': request.build_absolute_uri(reverse('confirm_account')),
        'token': user.confirmation_token,
        'user_id': user.id,
        'first_name': user.first_name,
        'next': request.GET.get('next', '/')
    }
    msg.send()
def _send_confirmation_email(user, request):
    msg = EmailMessage()
    msg.to = [user.email]
    msg.from_email = get_setting(settings.AUTH_FROM_EMAIL, request)
    msg.subject = 'Confirm Your Account'
    msg.template = get_setting(settings.SIGN_UP_EMAIL_TEMPLATE, request)
    msg.substitution_data = {
        'link': request.build_absolute_uri(reverse('confirm_account')),
        'token': user.confirmation_token,
        'user_id': user.id,
        'first_name': user.first_name,
        'next': request.GET.get('next', '/')
    }
    msg.send()
def forgot_password(request):
    reset_message = 'You will receive an email with reset instructions shortly'
    not_found_message = 'We could not find a user for that email address'

    if request.method == 'POST':
        form = forms.ForgotPasswordForm(request.POST)

        if form.is_valid():
            email = form.cleaned_data['email']
            user = KagisoUser.get_user_from_auth_db(email)

            if user:
                msg = EmailMessage()
                msg.to = [user.email]
                msg.from_email = get_setting(settings.AUTH_FROM_EMAIL, request)
                msg.subject = 'Password Reset'
                msg.template = get_setting(
                    settings.PASSWORD_RESET_EMAIL_TEMPLATE,
                    request
                )
                msg.substitution_data = {
                    'link': request.build_absolute_uri
                    (reverse('reset_password')),
                    'token': user.generate_reset_password_token(),
                    'user_id': user.id
                }
                msg.send()

                messages.success(request, reset_message)
                return HttpResponseRedirect(reverse('forgot_password'))
            else:
                messages.error(request, not_found_message)
                return HttpResponseRedirect(reverse('forgot_password'))
    else:
        form = forms.ForgotPasswordForm()

    return render(
        request,
        'kagiso_auth/forgot_password.html',
        {'form': form}
    )