Example #1
0
def send_email_reminder(request):
    """Send reminder email."""
    statsd_waffle_incr('users.send_email_reminder', 'signin_metrics')
    if request.method == 'POST':
        statsd_waffle_incr('users.send_email_reminder.POST', 'signin_metrics')
        form = EmailReminderForm(request.POST)
        if form.is_valid():
            error = None
            username = form.cleaned_data['username']
            try:
                user = User.objects.get(username=username, is_active=True)
                if user.email:
                    # TODO: should this be on a model or manager instead?
                    statsd_waffle_incr('users.send_email_reminder.SUCCESS',
                                      'signin_metrics')
                    send_reminder_email(user)
                else:
                    statsd_waffle_incr('users.send_email_reminder.NOEMAIL',
                                      'signin_metrics')
                    error = 'no_email'
            except User.DoesNotExist:
                # Don't leak existence of email addresses.
                statsd_waffle_incr('users.send_email_reminder.NOUSER',
                                  'signin_metrics')
            return jingo.render(request,
                                'users/send_email_reminder_done.html',
                                {'username': username, 'error': error})
    else:
        form = EmailConfirmationForm()
    return jingo.render(request, 'users/resend_confirmation.html',
                        {'form': form})
Example #2
0
def send_email_reminder(request):
    """Send reminder email."""
    statsd_waffle_incr('users.send_email_reminder', 'signin_metrics')
    if request.method == 'POST':
        statsd_waffle_incr('users.send_email_reminder.POST', 'signin_metrics')
        form = EmailReminderForm(request.POST)
        if form.is_valid():
            error = None
            username = form.cleaned_data['username']
            try:
                user = User.objects.get(username=username, is_active=True)
                if user.email:
                    # TODO: should this be on a model or manager instead?
                    statsd_waffle_incr('users.send_email_reminder.SUCCESS',
                                      'signin_metrics')
                    send_reminder_email(user)
                else:
                    statsd_waffle_incr('users.send_email_reminder.NOEMAIL',
                                      'signin_metrics')
                    error = 'no_email'
            except User.DoesNotExist:
                # Don't leak existence of email addresses.
                statsd_waffle_incr('users.send_email_reminder.NOUSER',
                                  'signin_metrics')
            return render(request, 'users/send_email_reminder_done.html',
                          {'username': username, 'error': error})
    else:
        form = EmailConfirmationForm()
    return render(request, 'users/resend_confirmation.html', {'form': form})
Example #3
0
def send_email_reminder(request):
    """Send reminder email."""
    statsd_waffle_incr("users.send_email_reminder", "signin_metrics")
    if request.method == "POST":
        statsd_waffle_incr("users.send_email_reminder.POST", "signin_metrics")
        form = EmailReminderForm(request.POST)
        if form.is_valid():
            error = None
            username = form.cleaned_data["username"]
            try:
                user = User.objects.get(username=username, is_active=True)
                if user.email:
                    # TODO: should this be on a model or manager instead?
                    statsd_waffle_incr("users.send_email_reminder.SUCCESS", "signin_metrics")
                    send_reminder_email(user)
                else:
                    statsd_waffle_incr("users.send_email_reminder.NOEMAIL", "signin_metrics")
                    error = "no_email"
            except User.DoesNotExist:
                # Don't leak existence of email addresses.
                statsd_waffle_incr("users.send_email_reminder.NOUSER", "signin_metrics")
            return jingo.render(request, "users/send_email_reminder_done.html", {"username": username, "error": error})
    else:
        form = EmailConfirmationForm()
    return jingo.render(request, "users/resend_confirmation.html", {"form": form})
Example #4
0
def browserid_register(request):
    """Handle user creation when assertion is valid, but no existing user"""
    statsd_waffle_incr('users.browserid_register', 'signin_metrics')
    redirect_to = request.session.get(
        SESSION_REDIRECT_TO,
        getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home')))
    email = request.session.get(SESSION_VERIFIED_EMAIL, None)

    if not email:
        # This is pointless without a verified email.
        return HttpResponseRedirect(redirect_to)

    # Set up the initial forms
    register_form = BrowserIDRegisterForm()
    login_form = AuthenticationForm()

    if request.method == 'POST':
        statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics')

        # If the profile creation form was submitted...
        if 'register' == request.POST.get('action', None):
            register_form = BrowserIDRegisterForm(request.POST)
            if register_form.is_valid():
                # If the registration form is valid, then create a new
                # Django user.
                # TODO: This all belongs in model classes
                username = register_form.cleaned_data['username']

                user = User.objects.create(username=username, email=email)
                user.set_unusable_password()
                user.save()

                profile = UserProfile.objects.create(user=user)
                profile.save()

                user.backend = 'django_browserid.auth.BrowserIDBackend'
                auth.login(request, user)

                # Bounce to the newly created profile page, since the user
                # might want to review & edit.
                statsd_waffle_incr('users.browserid_register.POST.SUCCESS',
                                   'signin_metrics')
                redirect_to = request.session.get(SESSION_REDIRECT_TO,
                                                  profile.get_absolute_url())
                return set_browserid_explained(
                    HttpResponseRedirect(redirect_to))

    # HACK: Pretend the session was modified. Otherwise, the data disappears
    # for the next request.
    request.session.modified = True

    return render(request, 'users/browserid_register.html', {
        'login_form': login_form,
        'register_form': register_form
    })
Example #5
0
def browserid_register(request):
    """Handle user creation when assertion is valid, but no existing user"""
    statsd_waffle_incr('users.browserid_register', 'signin_metrics')
    redirect_to = request.session.get(SESSION_REDIRECT_TO,
        getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home')))
    email = request.session.get(SESSION_VERIFIED_EMAIL, None)

    if not email:
        # This is pointless without a verified email.
        return HttpResponseRedirect(redirect_to)

    # Set up the initial forms
    register_form = BrowserIDRegisterForm(request.locale)
    login_form = AuthenticationForm()

    if request.method == 'POST':
        statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics')

        # If the profile creation form was submitted...
        if 'register' == request.POST.get('action', None):
            register_form = BrowserIDRegisterForm(request.locale, request.POST)
            if register_form.is_valid():
                # If the registration form is valid, then create a new
                # Django user.
                # TODO: This all belongs in model classes
                username = register_form.cleaned_data['username']
                
                user = User.objects.create(username=username, email=email)
                user.set_unusable_password()
                user.save()
                
                profile = UserProfile.objects.create(user=user)
                profile.save()
                
                user.backend = 'django_browserid.auth.BrowserIDBackend'
                auth.login(request, user)
                
                # Bounce to the newly created profile page, since the user
                # might want to review & edit.
                statsd_waffle_incr('users.browserid_register.POST.SUCCESS',
                                   'signin_metrics')

                newsletter_subscribe(request, email,
                                     register_form.cleaned_data)
                redirect_to = request.session.get(SESSION_REDIRECT_TO,
                                                  profile.get_absolute_url())
                return set_browserid_explained(HttpResponseRedirect(redirect_to))

    # HACK: Pretend the session was modified. Otherwise, the data disappears
    # for the next request.
    request.session.modified = True

    return render(request, 'users/browserid_register.html',
                        {'login_form': login_form,
                         'register_form': register_form})
Example #6
0
def browserid_register(request):
    """Handle user creation when assertion is valid, but no existing user"""
    statsd_waffle_incr('users.browserid_register', 'signin_metrics')
    redirect_to = request.session.get(SESSION_REDIRECT_TO,
        getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home')))
    email = request.session.get(SESSION_VERIFIED_EMAIL, None)

    if not email:
        # This is pointless without a verified email.
        return HttpResponseRedirect(redirect_to)

    # Set up the initial forms
    register_form = BrowserIDRegisterForm()
    login_form = AuthenticationForm()

    if request.method == 'POST':
        statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics')

        # If the profile creation form was submitted...
        if 'register' == request.POST.get('action', None):
            register_form = BrowserIDRegisterForm(request.POST)
            if register_form.is_valid():
                try:
                    # If the registration form is valid, then create a new
                    # Django user, a new MindTouch user, and link the two
                    # together.
                    # TODO: This all belongs in model classes
                    username = register_form.cleaned_data['username']

                    user = User.objects.create(username=username, email=email)
                    user.set_unusable_password()
                    user.save()

                    profile = UserProfile.objects.create(user=user)
                    if settings.DEKIWIKI_ENDPOINT:
                        deki_user = DekiUserBackend.post_mindtouch_user(user)
                        profile.deki_user_id = deki_user.id
                    profile.save()

                    user.backend = 'django_browserid.auth.BrowserIDBackend'
                    auth.login(request, user)

                    # Bounce to the newly created profile page, since the user
                    # might want to review & edit.
                    statsd_waffle_incr('users.browserid_register.POST.SUCCESS',
                                       'signin_metrics')
                    redirect_to = request.session.get(SESSION_REDIRECT_TO,
                                                    profile.get_absolute_url())
                    return set_browserid_explained(
                        _redirect_with_mindtouch_login(redirect_to,
                                                       user.username))
                except MindTouchAPIError:
                    if user:
                        user.delete()
                    return render(request, '500.html',
                                        {'error_message': "We couldn't "
                                        "register a new account at this time. "
                                        "Please try again later."})

    # HACK: Pretend the session was modified. Otherwise, the data disappears
    # for the next request.
    request.session.modified = True

    return render(request, 'users/browserid_register.html',
                        {'login_form': login_form,
                         'register_form': register_form})
Example #7
0
def browserid_register(request):
    """Handle user creation when assertion is valid, but no existing user"""
    statsd_waffle_incr('users.browserid_register', 'signin_metrics')
    redirect_to = request.session.get(SESSION_REDIRECT_TO,
        getattr(settings, 'LOGIN_REDIRECT_URL', reverse('home')))
    email = request.session.get(SESSION_VERIFIED_EMAIL, None)

    if not email:
        # This is pointless without a verified email.
        return HttpResponseRedirect(redirect_to)

    # Set up the initial forms
    register_form = BrowserIDRegisterForm()
    login_form = AuthenticationForm()

    if request.method == 'POST':
        statsd_waffle_incr('users.browserid_register.POST', 'signin_metrics')

        # If the profile creation form was submitted...
        if 'register' == request.POST.get('action', None):
            register_form = BrowserIDRegisterForm(request.POST)
            if register_form.is_valid():
                try:
                    # If the registration form is valid, then create a new
                    # Django user, a new MindTouch user, and link the two
                    # together.
                    # TODO: This all belongs in model classes
                    username = register_form.cleaned_data['username']

                    user = User.objects.create(username=username, email=email)
                    user.set_unusable_password()
                    user.save()

                    profile = UserProfile.objects.create(user=user)
                    if settings.DEKIWIKI_ENDPOINT:
                        deki_user = DekiUserBackend.post_mindtouch_user(user)
                        profile.deki_user_id = deki_user.id
                    profile.save()

                    user.backend = 'django_browserid.auth.BrowserIDBackend'
                    auth.login(request, user)

                    # Bounce to the newly created profile page, since the user
                    # might want to review & edit.
                    statsd_waffle_incr('users.browserid_register.POST.SUCCESS',
                                       'signin_metrics')
                    redirect_to = request.session.get(SESSION_REDIRECT_TO,
                                                    profile.get_absolute_url())
                    return set_browserid_explained(
                        _redirect_with_mindtouch_login(redirect_to,
                                                       user.username))
                except MindTouchAPIError:
                    if user:
                        user.delete()
                    return jingo.render(request, '500.html',
                                        {'error_message': "We couldn't "
                                        "register a new account at this time. "
                                        "Please try again later."})

    # HACK: Pretend the session was modified. Otherwise, the data disappears
    # for the next request.
    request.session.modified = True

    return jingo.render(request, 'users/browserid_register.html',
                        {'login_form': login_form,
                         'register_form': register_form})