Example #1
0
def authenticate(request, redirect_url):
    user = request.user
    token = request.GET.get('token')

    if request.session.get('fake_auth') and request.META[
            'SERVER_NAME'] in settings.FAKE_AUTH_URLS and hasattr(
                settings, 'FAKE_AUTH'):
        fake_auth = settings.FAKE_AUTH
        if not token:
            curr_url = request.get_full_path().split('?')[0]
            fake_token = binascii.b2a_hex(os.urandom(10))
            return HttpResponseRedirect(
                '%s?show_public=%s&token=%s' %
                (curr_url, str(request.GET.get('show_public', 0)), fake_token))

        name = fake_auth['name']
        kennitala = fake_auth['kennitala']
    else:
        fake_auth = None

    if not token:
        return HttpResponseRedirect(redirect_url)

    if fake_auth is None:

        result = get_saml(request, token)
        name, kennitala = parse_saml(result['saml'])
        '''
        # If the WebFault exception is still popping up (yet to be determined), this should be
        # moved to an exception-handling middleware of some sorts. For now, we will let the
        # exception be raised at this point and handled by the 500-error handling mechanism.
        #
        # Remove this section if 2014-11-02 was a very long time ago, but please remember to then
        # also remove the "authentication_error" view in 'core.views.py'.
        try:
            result = get_saml(request, token)
            name, kennitala = parse_saml(result['saml'])
        except Exception as ex:
            template = "An exception of type {0} occured. Arguments:\n{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            print message
            
            return authentication_error(request, '')
        '''

    if not user.is_authenticated() or user.username != kennitala:
        user = ensure_user(request, name, kennitala)

    auth = UserAuthentication()
    auth.user = user
    auth.token = token
    auth.method = 'icekey'
    auth.save()

    return auth
Example #2
0
    def handle(self, *args, **options):

        petition_count = 100
        signatures_min = 20
        signatures_max = 30

        user, newly_created = User.objects.get_or_create(
            username='******', first_name='Test User')

        petitions = Petition.objects.all().order_by(
            '-date_created')[:petition_count]
        for petition in petitions:

            signatures_count = randrange(signatures_min, signatures_max + 1)

            stdout.write("Generating %d signatures for petition '%s'" %
                         (signatures_count, petition.name))
            stdout.flush()

            for i in range(0, signatures_count):
                random_number = 0  # Just for formality's sake, really.
                user = None
                while user is None:
                    random_number = randrange(100000, 999999)
                    random_username = '******' % random_number
                    random_name = 'Tester nr. %d' % random_number
                    if User.objects.filter(
                            username=random_username).count() == 0:
                        user = User.objects.create(username=random_username)
                        user.first_name = random_name
                        user.save()

                # Generate a test authentication
                auth = UserAuthentication()
                auth.user = user
                auth.method = 'test'
                auth.token = 'test_%d' % random_number
                auth.save()

                # Generate a test signature
                sig = Signature()
                sig.user = user
                sig.petition = petition
                sig.authentication = auth
                sig.show_public = True
                sig.stance = 'oppose' if randrange(
                    0, 2) == 1 else 'endorse'  # Coin toss
                sig.save()

                stdout.write(".")
                stdout.flush()

            stdout.write(" done\n")
            stdout.flush()
Example #3
0
def authenticate(request, redirect_url):
    user = request.user
    token = request.GET.get('token')

    if request.session.get('fake_auth') and request.META['SERVER_NAME'] in settings.FAKE_AUTH_URLS and hasattr(settings, 'FAKE_AUTH'):
        fake_auth = settings.FAKE_AUTH
        if not token:
            curr_url = request.get_full_path().split('?')[0]
            fake_token = binascii.b2a_hex(os.urandom(10))
            return HttpResponseRedirect('%s?show_public=%s&token=%s' % (curr_url, str(request.GET.get('show_public', 0)), fake_token))

        name = fake_auth['name']
        kennitala = fake_auth['kennitala']
    else:
        fake_auth = None

    if not token:
        return HttpResponseRedirect(redirect_url)

    if fake_auth is None:

        result = get_saml(request, token)
        name, kennitala = parse_saml(result['saml'])
        '''
        # If the WebFault exception is still popping up (yet to be determined), this should be
        # moved to an exception-handling middleware of some sorts. For now, we will let the
        # exception be raised at this point and handled by the 500-error handling mechanism.
        #
        # Remove this section if 2014-11-02 was a very long time ago, but please remember to then
        # also remove the "authentication_error" view in 'core.views.py'.
        try:
            result = get_saml(request, token)
            name, kennitala = parse_saml(result['saml'])
        except Exception as ex:
            template = "An exception of type {0} occured. Arguments:\n{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            print message
            
            return authentication_error(request, '')
        '''

    if not user.is_authenticated() or user.username != kennitala:
        user = ensure_user(request, name, kennitala)

    auth = UserAuthentication()
    auth.user = user
    auth.token = token
    auth.method = 'icekey'
    auth.save()

    return auth
Example #4
0
    def handle(self, *args, **options):

        petition_count = 100
        signatures_min = 20
        signatures_max = 30

        user, newly_created = User.objects.get_or_create(username='******', first_name='Test User')

        petitions = Petition.objects.all().order_by('-date_created')[:petition_count]
        for petition in petitions:

            signatures_count = randrange(signatures_min, signatures_max + 1)

            stdout.write("Generating %d signatures for petition '%s'" % (signatures_count, petition.name))
            stdout.flush()

            for i in range(0, signatures_count):
                random_number = 0 # Just for formality's sake, really.
                user = None
                while user is None:
                    random_number = randrange(100000, 999999)
                    random_username = '******' % random_number
                    random_name = 'Tester nr. %d' % random_number
                    if User.objects.filter(username=random_username).count() == 0:
                        user = User.objects.create(username=random_username)
                        user.first_name = random_name
                        user.save()

                # Generate a test authentication
                auth = UserAuthentication()
                auth.user = user
                auth.method = 'test'
                auth.token = 'test_%d' % random_number
                auth.save()

                # Generate a test signature
                sig = Signature()
                sig.user = user
                sig.petition = petition
                sig.authentication = auth
                sig.show_public = True
                sig.stance = 'oppose' if randrange(0, 2) == 1 else 'endorse' # Coin toss
                sig.save()

                stdout.write(".")
                stdout.flush()

            stdout.write(" done\n")
            stdout.flush()