Beispiel #1
0
def activate_user(request,
                  backend=RegistrationBackend(),
                  success_url=None,
                  extra_context=None,
                  **context):
    user = backend.activate(request, **context)
    if user:
        try:
            event = Event.objects.get(id=s.WELCOME_EVENT_ID)
            employer = Employer.objects.get(name="Umeqo")
            recruiter = User.objects.get(id=s.UMEQO_RECRUITER_ID)
            notice_type = NoticeType.objects.get(label="public_invite")
            invite_message = 'Welcome to Umeqo! Recruiters can now send you invitations to events, and this is an example of one. To learn more, click "RSVP Attending" below.'
            notification.send(
                [user], notice_type, {
                    'employer': employer,
                    'recruiter': recruiter,
                    'invite_message': invite_message,
                    'event': event,
                    'name': user.first_name
                })
        except Event.DoesNotExist:
            pass
        user.backend = s.AUTHENTICATION_BACKENDS[0]
        auth_login(request, user)
        us_user_logged_in.send(sender=request.user.__class__,
                               request=request,
                               user=request.user)
        if success_url is None:
            to, args, context = backend.post_activation_redirect(request, user)
            return redirect(to, *args, **context)
        else:
            return redirect(success_url)
    context.update(extra_context or {})
    return context
Beispiel #2
0
def activate_user(request, backend=RegistrationBackend(), success_url=None, extra_context=None, **context):
    user = backend.activate(request, **context)
    if user:
        try:
            event = Event.objects.get(id=s.WELCOME_EVENT_ID)
            employer = Employer.objects.get(name="Umeqo")
            recruiter = User.objects.get(id=s.UMEQO_RECRUITER_ID)
            notice_type = NoticeType.objects.get(label="public_invite")
            invite_message = 'Welcome to Umeqo! Recruiters can now send you invitations to events, and this is an example of one. To learn more, click "RSVP Attending" below.'
            notification.send(
                [user],
                notice_type,
                {
                    "employer": employer,
                    "recruiter": recruiter,
                    "invite_message": invite_message,
                    "event": event,
                    "name": user.first_name,
                },
            )
        except Event.DoesNotExist:
            pass
        user.backend = s.AUTHENTICATION_BACKENDS[0]
        auth_login(request, user)
        us_user_logged_in.send(sender=request.user.__class__, request=request, user=request.user)
        if success_url is None:
            to, args, context = backend.post_activation_redirect(request, user)
            return redirect(to, *args, **context)
        else:
            return redirect(success_url)
    context.update(extra_context or {})
    return context
Beispiel #3
0
def password_change(request, password_change_form=PasswordChangeForm, extra_context=None):
    form = password_change_form(user=request.user, data=request.POST)
    if form.is_valid():
        form.save()
        request.user.userattributes.last_password_change_date = datetime.now()
        for session_key_object in request.user.sessionkey_set.all():
            Session.objects.filter(session_key=session_key_object.session_key).delete()
        request.user.sessionkey_set.all().delete()
        request.user.backend = "django.contrib.auth.backends.ModelBackend"
        auth_login(request, request.user)
        us_user_logged_in.send(sender=request.user.__class__, request=request, user=request.user)
        data = {"valid": True}
    else:
        data = {"valid": False, "errors": form.errors}
    return HttpResponse(simplejson.dumps(data), mimetype="application/json")
Beispiel #4
0
def password_change(request,
                    password_change_form=PasswordChangeForm,
                    extra_context=None):
    form = password_change_form(user=request.user, data=request.POST)
    if form.is_valid():
        form.save()
        request.user.userattributes.last_password_change_date = datetime.now()
        for session_key_object in request.user.sessionkey_set.all():
            Session.objects.filter(
                session_key=session_key_object.session_key).delete()
        request.user.sessionkey_set.all().delete()
        request.user.backend = 'django.contrib.auth.backends.ModelBackend'
        auth_login(request, request.user)
        us_user_logged_in.send(sender=request.user.__class__,
                               request=request,
                               user=request.user)
        data = {'valid': True}
    else:
        data = {'valid': False, 'errors': form.errors}
    return HttpResponse(simplejson.dumps(data), mimetype="application/json")
Beispiel #5
0
def login(request,
          template_name="login.html",
          authentication_form=AuthenticationForm,
          login_url=None,
          current_app=None,
          extra_context={}):
    if request.user.is_superuser:
        return redirect(reverse('super_login'))
    elif request.user.is_authenticated():
        return redirect(reverse('home'))

    # Log the login attempt.
    ip_address = get_ip(request)
    if ip_address:
        LoginAttempt.objects.create(ip_address=ip_address)

    half_day_ago = datetime.now() - timedelta(hours=12)
    login_attempts = LoginAttempt.objects.all().filter(
        ip_address=ip_address).filter(
            attempt_datetime__gt=half_day_ago).count()

    extra_context.update({
        'show_captcha': (login_attempts >= 10),
        'invalid_captcha': False,
        'RECAPTCHA_PUBLIC_KEY': s.RECAPTCHA_PUBLIC_KEY,
    })

    form = authentication_form(data=request.POST)
    if not form.is_valid():
        if re.search(m.not_activated, str(form.errors)):
            extra_context.update({'show_resend_activation_email_form': True})
        else:
            extra_context.update({'show_resend_activation_email_form': False})

    if request.method == 'POST' and login_attempts > 10:
        captcha_params = urllib.urlencode({
            'privatekey':
            s.RECAPTCHA_PRIVATE_KEY,
            'remoteip':
            ip_address,
            'challenge':
            request.POST.get('recaptcha_challenge_field', ''),
            'response':
            request.POST.get('recaptcha_response_field', '')
        })
        captcha_req = urllib2.Request(
            url="http://www.google.com/recaptcha/api/verify",
            data=captcha_params,
            headers={
                "Content-type": "application/x-www-form-urlencoded",
                "User-agent": "reCAPTCHA Umeqo"
            })
        captcha_resp = urllib2.urlopen(captcha_req)
        return_values = captcha_resp.read().splitlines()
        captcha_resp.close()

        if return_values[0] != 'true':
            form = authentication_form(data=request.POST)
            current_site = get_current_site(request)

            context = extra_context
            context.update({
                'invalid_captcha': True,
                'form': form,
                'site': current_site,
                'site_name': current_site.name,
            })
            return context
    response = auth_login_view(request,
                               template_name=template_name,
                               authentication_form=AuthenticationForm,
                               current_app=current_app,
                               extra_context=extra_context)
    if request.user.is_staff:
        return redirect(reverse('super_login'))
    else:
        us_user_logged_in.send(sender=request.user.__class__,
                               request=request,
                               user=request.user)
        return response
Beispiel #6
0
def login(
    request,
    template_name="login.html",
    authentication_form=AuthenticationForm,
    login_url=None,
    current_app=None,
    extra_context={},
):
    if request.user.is_superuser:
        return redirect(reverse("super_login"))
    elif request.user.is_authenticated():
        return redirect(reverse("home"))

    # Log the login attempt.
    ip_address = get_ip(request)
    if ip_address:
        LoginAttempt.objects.create(ip_address=ip_address)

    half_day_ago = datetime.now() - timedelta(hours=12)
    login_attempts = (
        LoginAttempt.objects.all().filter(ip_address=ip_address).filter(attempt_datetime__gt=half_day_ago).count()
    )

    extra_context.update(
        {
            "show_captcha": (login_attempts >= 10),
            "invalid_captcha": False,
            "RECAPTCHA_PUBLIC_KEY": s.RECAPTCHA_PUBLIC_KEY,
        }
    )

    form = authentication_form(data=request.POST)
    if not form.is_valid():
        if re.search(m.not_activated, str(form.errors)):
            extra_context.update({"show_resend_activation_email_form": True})
        else:
            extra_context.update({"show_resend_activation_email_form": False})

    if request.method == "POST" and login_attempts > 10:
        captcha_params = urllib.urlencode(
            {
                "privatekey": s.RECAPTCHA_PRIVATE_KEY,
                "remoteip": ip_address,
                "challenge": request.POST.get("recaptcha_challenge_field", ""),
                "response": request.POST.get("recaptcha_response_field", ""),
            }
        )
        captcha_req = urllib2.Request(
            url="http://www.google.com/recaptcha/api/verify",
            data=captcha_params,
            headers={"Content-type": "application/x-www-form-urlencoded", "User-agent": "reCAPTCHA Umeqo"},
        )
        captcha_resp = urllib2.urlopen(captcha_req)
        return_values = captcha_resp.read().splitlines()
        captcha_resp.close()

        if return_values[0] != "true":
            form = authentication_form(data=request.POST)
            current_site = get_current_site(request)

            context = extra_context
            context.update(
                {"invalid_captcha": True, "form": form, "site": current_site, "site_name": current_site.name}
            )
            return context
    response = auth_login_view(
        request,
        template_name=template_name,
        authentication_form=AuthenticationForm,
        current_app=current_app,
        extra_context=extra_context,
    )
    if request.user.is_staff:
        return redirect(reverse("super_login"))
    else:
        us_user_logged_in.send(sender=request.user.__class__, request=request, user=request.user)
        return response