Ejemplo n.º 1
0
def login(request):
    init_third_party_session(request)

    force_login = request.GET.get('force_login',
                                  settings.TWITTER_AUTH_FORCE_LOGIN)
    oauth = OAuth1(settings.TWITTER_TOKEN,
                   client_secret=settings.TWITTER_SECRET)
    resp = requests.post(url=request_token_url, auth=oauth)
    if resp.status_code != 200:
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response (code: %d) %s",
                     resp.status_code, resp.content)
        return HttpResponseRedirect(reverse('edit_profile'))

    oa_resp = dict(parse_qsl(resp.content))
    if 'status' in oa_resp and oa_resp['status'] != '200':
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response %s", resp)
        return HttpResponseRedirect(reverse('edit_profile'))

    request.session['request_token'] = oa_resp
    params = {
        'oauth_token': request.session['request_token']['oauth_token'],
    }
    if force_login:
        params['force_login'] = 1

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    url = "%s?%s" % (authenticate_url, urlencode(params))
    return HttpResponseRedirect(url)
Ejemplo n.º 2
0
def login(request):
    init_third_party_session(request)
    force_login = request.GET.get('force_login',
                                  settings.TWITTER_AUTH_FORCE_LOGIN)
    consumer = oauth.Consumer(settings.TWITTER_TOKEN,
                              settings.TWITTER_SECRET)
    client = oauth.Client(consumer)
    resp, content = client.request(request_token_url, "GET")
    if resp['status'] != '200':
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response %s", resp)
        return HttpResponseRedirect(reverse('edit_profile'))

    oa_resp = dict(cgi.parse_qsl(content))
    if 'status' in oa_resp and oa_resp['status'] != '200':
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response %s", resp)
        return HttpResponseRedirect(reverse('edit_profile'))

    request.session['request_token'] = dict(cgi.parse_qsl(content))
    params = {
        'oauth_token': request.session['request_token']['oauth_token'],
    }
    if force_login:
        params['force_login'] = 1

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    url = "%s?%s" % (authenticate_url, urllib.urlencode(params))
    return HttpResponseRedirect(url)
Ejemplo n.º 3
0
def login(request):
    init_third_party_session(request)
    oauth = OAuth1(settings.LINKEDIN_TOKEN,
                   client_secret=settings.LINKEDIN_SECRET)
    resp = requests.post(url=request_token_url, auth=oauth)
    if resp.status_code != 200:
        messages.error(request, 'Invalid LinkedIn response')
        logger.error(
            "Invalid LinkedIn response while getting request token " +
            "(code: %d) %s", resp.status_code, resp.content)
        return HttpResponseRedirect(reverse('edit_profile'))

    oa_resp = dict(parse_qsl(resp.content))
    request.session['request_token'] = oa_resp

    url = oa_resp.get('xoauth_request_auth_url') + \
        "?oauth_token=%s" % oa_resp.get('oauth_token')

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    return HttpResponseRedirect(url)
Ejemplo n.º 4
0
def login(request):
    init_third_party_session(request)
    force_login = request.GET.get('force_login',
                                  settings.TWITTER_AUTH_FORCE_LOGIN)
    consumer = oauth.Consumer(settings.TWITTER_TOKEN, settings.TWITTER_SECRET)
    client = oauth.Client(consumer)
    resp, content = client.request(request_token_url, "GET")
    if resp['status'] != '200':
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response %s", resp)
        return HttpResponseRedirect(reverse('edit_profile'))

    oa_resp = dict(cgi.parse_qsl(content))
    if 'status' in oa_resp and oa_resp['status'] != '200':
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response %s", resp)
        return HttpResponseRedirect(reverse('edit_profile'))

    request.session['request_token'] = dict(cgi.parse_qsl(content))
    params = {
        'oauth_token': request.session['request_token']['oauth_token'],
    }
    if force_login:
        params['force_login'] = 1

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    url = "%s?%s" % (authenticate_url, urllib.urlencode(params))
    return HttpResponseRedirect(url)
Ejemplo n.º 5
0
def login(request):
    init_third_party_session(request)

    force_login = request.GET.get('force_login',
                                  settings.TWITTER_AUTH_FORCE_LOGIN)
    oauth = OAuth1(settings.TWITTER_TOKEN,
                   client_secret=settings.TWITTER_SECRET)
    resp = requests.post(url=request_token_url, auth=oauth)
    if resp.status_code != 200:
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response (code: %d) %s",
                     resp.status_code, resp.content)
        return HttpResponseRedirect(reverse('edit_profile'))

    oa_resp = dict(parse_qsl(resp.content))
    if 'status' in oa_resp and oa_resp['status'] != '200':
        messages.error(request, 'Invalid Twitter response')
        logger.error("Invalid twitter response %s", resp)
        return HttpResponseRedirect(reverse('edit_profile'))

    request.session['request_token'] = oa_resp
    params = {
        'oauth_token': request.session['request_token']['oauth_token'],
    }
    if force_login:
        params['force_login'] = 1

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    url = "%s?%s" % (authenticate_url, urlencode(params))
    return HttpResponseRedirect(url)
Ejemplo n.º 6
0
def login(request, template="im/third_party_check_local.html", extra_context=None):

    init_third_party_session(request)
    extra_context = extra_context or {}

    tokens = request.META
    third_party_key = get_pending_key(request)

    shibboleth_headers = {}
    for token in dir(Tokens):
        if token == token.upper():
            shibboleth_headers[token] = request.META.get(getattr(Tokens, token), "NOT_SET")
            # also include arbitrary shibboleth headers
            for key in request.META.keys():
                if key.startswith("HTTP_SHIB_"):
                    shibboleth_headers[key.replace("HTTP_", "")] = request.META.get(key)

    # log shibboleth headers
    # TODO: info -> debug
    logger.info("shibboleth request: %r" % shibboleth_headers)

    try:
        eppn = tokens.get(Tokens.SHIB_EPPN, None)
        user_id = tokens.get(Tokens.SHIB_REMOTE_USER)
        fullname, first_name, last_name, email = None, None, None, None
        if global_settings.DEBUG and not eppn:
            user_id = getattr(global_settings, "SHIBBOLETH_TEST_REMOTE_USER", None)
            eppn = getattr(global_settings, "SHIBBOLETH_TEST_EPPN", None)
            fullname = getattr(global_settings, "SHIBBOLETH_TEST_FULLNAME", None)

        if not user_id:
            raise KeyError(
                _(astakos_messages.SHIBBOLETH_MISSING_USER_ID)
                % {"domain": settings.BASE_HOST, "contact_email": settings.CONTACT_EMAIL}
            )
        if Tokens.SHIB_DISPLAYNAME in tokens:
            fullname = tokens[Tokens.SHIB_DISPLAYNAME]
        elif Tokens.SHIB_CN in tokens:
            fullname = tokens[Tokens.SHIB_CN]
        if Tokens.SHIB_NAME in tokens:
            first_name = tokens[Tokens.SHIB_NAME]
        if Tokens.SHIB_SURNAME in tokens:
            last_name = tokens[Tokens.SHIB_SURNAME]

        if fullname:
            splitted = fullname.split(" ", 1)
            if len(splitted) == 2:
                first_name, last_name = splitted
        fullname = "%s %s" % (first_name, last_name)

        if not any([first_name, last_name]) and settings.SHIBBOLETH_REQUIRE_NAME_INFO:
            raise KeyError(_(astakos_messages.SHIBBOLETH_MISSING_NAME))

    except KeyError, e:
        # invalid shibboleth headers, redirect to login, display message
        logger.exception(e)
        messages.error(request, e.message)
        return HttpResponseRedirect(login_url(request))
Ejemplo n.º 7
0
def login(
    request,
    template='im/third_party_check_local.html',
    extra_context=None):

    init_third_party_session(request)
    extra_context = extra_context or {}

    tokens = request.META
    third_party_key = get_pending_key(request)

    shibboleth_headers = {}
    for token in dir(Tokens):
        if token == token.upper():
            shibboleth_headers[token] = request.META.get(getattr(Tokens,
                                                                 token),
                                                         'NOT_SET')
            # also include arbitrary shibboleth headers
            for key in request.META.keys():
                if key.startswith('HTTP_SHIB_'):
                    shibboleth_headers[key.replace('HTTP_', '')] = \
                        request.META.get(key)

    # log shibboleth headers
    # TODO: info -> debug
    logger.info("shibboleth request: %r" % shibboleth_headers)

    try:
        eppn = tokens.get(Tokens.SHIB_EPPN)

        if global_settings.DEBUG and not eppn:
            eppn = getattr(global_settings, 'SHIBBOLETH_TEST_EPPN', None)
            realname = getattr(global_settings, 'SHIBBOLETH_TEST_REALNAME',
                               None)

        if not eppn:
            raise KeyError(_(astakos_messages.SHIBBOLETH_MISSING_EPPN) % {
                'domain': settings.BASE_HOST,
                'contact_email': settings.CONTACT_EMAIL
            })
        if Tokens.SHIB_DISPLAYNAME in tokens:
            realname = tokens[Tokens.SHIB_DISPLAYNAME]
        elif Tokens.SHIB_CN in tokens:
            realname = tokens[Tokens.SHIB_CN]
        elif Tokens.SHIB_NAME in tokens and Tokens.SHIB_SURNAME in tokens:
            realname = tokens[Tokens.SHIB_NAME] + ' ' + tokens[Tokens.SHIB_SURNAME]
        else:
            if settings.SHIBBOLETH_REQUIRE_NAME_INFO:
                raise KeyError(_(astakos_messages.SHIBBOLETH_MISSING_NAME))
            else:
                realname = ''

    except KeyError, e:
        # invalid shibboleth headers, redirect to login, display message
        messages.error(request, e.message)
        return HttpResponseRedirect(login_url(request))
Ejemplo n.º 8
0
def login(request):
    init_third_party_session(request)
    oauth = OAuth2Session(settings.GOOGLE_CLIENT_ID,
                          redirect_uri=get_redirect_uri(), scope=token_scope)

    params = {}
    force_login = request.GET.get('force_login', request.GET.get('from_login',
                                                                 True))
    if force_login:
        params['approval_prompt'] = 'force'

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    auth_url, state = oauth.authorization_url(authenticate_url, **params)
    return HttpResponseRedirect(auth_url)
Ejemplo n.º 9
0
def login(request):
    init_third_party_session(request)
    oauth = OAuth2Session(settings.GOOGLE_CLIENT_ID,
                          redirect_uri=get_redirect_uri(),
                          scope=token_scope)

    params = {}
    force_login = request.GET.get('force_login',
                                  request.GET.get('from_login', True))
    if force_login:
        params['approval_prompt'] = 'force'

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    auth_url, state = oauth.authorization_url(authenticate_url, **params)
    return HttpResponseRedirect(auth_url)
Ejemplo n.º 10
0
def login(request):
    init_third_party_session(request)
    params = {
        'scope': token_scope,
        'response_type': 'code',
        'redirect_uri': get_redirect_uri(),
        'client_id': settings.GOOGLE_CLIENT_ID
    }
    force_login = request.GET.get('force_login',
                                  request.GET.get('from_login', True))
    if force_login:
        params['approval_prompt'] = 'force'

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    url = "%s?%s" % (authenticate_url, urllib.urlencode(params))
    return HttpResponseRedirect(url)
Ejemplo n.º 11
0
def login(request):
    init_third_party_session(request)
    params = {
        'scope': token_scope,
        'response_type': 'code',
        'redirect_uri': get_redirect_uri(),
        'client_id': settings.GOOGLE_CLIENT_ID
    }
    force_login = request.GET.get('force_login', request.GET.get('from_login',
                                                                 True))
    if force_login:
        params['approval_prompt'] = 'force'

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    url = "%s?%s" % (authenticate_url, urllib.urlencode(params))
    return HttpResponseRedirect(url)
Ejemplo n.º 12
0
def login(request):
    init_third_party_session(request)
    consumer = oauth.Consumer(settings.LINKEDIN_TOKEN, settings.LINKEDIN_SECRET)
    client = oauth.Client(consumer)
    resp, content = client.request(request_token_url, "GET")
    if resp["status"] != "200":
        messages.error(request, "Invalid linkedin response")
        return HttpResponseRedirect(reverse("edit_profile"))

    request_token = dict(cgi.parse_qsl(content))
    request.session["request_token"] = request_token

    url = request_token.get("xoauth_request_auth_url") + "?oauth_token=%s" % request_token.get("oauth_token")

    if request.GET.get("key", None):
        request.session["pending_key"] = request.GET.get("key")

    if request.GET.get("next", None):
        request.session["next_url"] = request.GET.get("next")

    return HttpResponseRedirect(url)
Ejemplo n.º 13
0
def login(request):
    init_third_party_session(request)
    consumer = oauth.Consumer(settings.LINKEDIN_TOKEN,
                              settings.LINKEDIN_SECRET)
    client = oauth.Client(consumer)
    resp, content = client.request(request_token_url, "GET")
    if resp['status'] != '200':
        messages.error(request, 'Invalid linkedin response')
        return HttpResponseRedirect(reverse('edit_profile'))

    request_token = dict(cgi.parse_qsl(content))
    request.session['request_token'] = request_token

    url = request_token.get('xoauth_request_auth_url') + \
        "?oauth_token=%s" % request_token.get('oauth_token')

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    return HttpResponseRedirect(url)
Ejemplo n.º 14
0
def login(request):
    init_third_party_session(request)
    consumer = oauth.Consumer(settings.LINKEDIN_TOKEN,
                              settings.LINKEDIN_SECRET)
    client = oauth.Client(consumer)
    resp, content = client.request(request_token_url, "GET")
    if resp['status'] != '200':
        messages.error(request, 'Invalid linkedin response')
        return HttpResponseRedirect(reverse('edit_profile'))

    request_token = dict(cgi.parse_qsl(content))
    request.session['request_token'] = request_token

    url = request_token.get('xoauth_request_auth_url') + \
        "?oauth_token=%s" % request_token.get('oauth_token')

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    return HttpResponseRedirect(url)
Ejemplo n.º 15
0
def login(request):
    init_third_party_session(request)
    oauth = OAuth1(settings.LINKEDIN_TOKEN,
                   client_secret=settings.LINKEDIN_SECRET)
    resp = requests.post(url=request_token_url, auth=oauth)
    if resp.status_code != 200:
        messages.error(request, 'Invalid LinkedIn response')
        logger.error("Invalid LinkedIn response while getting request token " +
                     "(code: %d) %s", resp.status_code, resp.content)
        return HttpResponseRedirect(reverse('edit_profile'))

    oa_resp = dict(parse_qsl(resp.content))
    request.session['request_token'] = oa_resp

    url = oa_resp.get('xoauth_request_auth_url') + \
        "?oauth_token=%s" % oa_resp.get('oauth_token')

    if request.GET.get('key', None):
        request.session['pending_key'] = request.GET.get('key')

    if request.GET.get('next', None):
        request.session['next_url'] = request.GET.get('next')

    return HttpResponseRedirect(url)
Ejemplo n.º 16
0
def login(request,
          template='im/third_party_check_local.html',
          extra_context=None):

    init_third_party_session(request)
    extra_context = extra_context or {}

    tokens = request.META
    third_party_key = get_pending_key(request)

    shibboleth_headers = {}
    for token in dir(Tokens):
        if token == token.upper():
            shibboleth_headers[token] = request.META.get(getattr(Tokens,
                                                                 token),
                                                         'NOT_SET')
            # also include arbitrary shibboleth headers
            for key in request.META.keys():
                if key.startswith('HTTP_SHIB_'):
                    shibboleth_headers[key.replace('HTTP_', '')] = \
                        request.META.get(key)

    # log shibboleth headers
    # TODO: info -> debug
    logger.info("shibboleth request: %r" % shibboleth_headers)

    try:
        eppn = tokens.get(Tokens.SHIB_EPPN, None)
        user_id = tokens.get(Tokens.SHIB_REMOTE_USER)
        fullname, first_name, last_name, email = None, None, None, None
        if global_settings.DEBUG and not eppn:
            user_id = getattr(global_settings, 'SHIBBOLETH_TEST_REMOTE_USER',
                              None)
            eppn = getattr(global_settings, 'SHIBBOLETH_TEST_EPPN', None)
            fullname = getattr(global_settings, 'SHIBBOLETH_TEST_FULLNAME',
                               None)

        if not user_id:
            raise KeyError(_(astakos_messages.SHIBBOLETH_MISSING_USER_ID) % {
                'domain': settings.BASE_HOST,
                'contact_email': settings.CONTACT_EMAIL
            })
        if Tokens.SHIB_DISPLAYNAME in tokens:
            fullname = tokens[Tokens.SHIB_DISPLAYNAME]
        elif Tokens.SHIB_CN in tokens:
            fullname = tokens[Tokens.SHIB_CN]
        if Tokens.SHIB_NAME in tokens:
            first_name = tokens[Tokens.SHIB_NAME]
        if Tokens.SHIB_SURNAME in tokens:
            last_name = tokens[Tokens.SHIB_SURNAME]

        if fullname:
            splitted = fullname.split(' ', 1)
            if len(splitted) == 2:
                first_name, last_name = splitted
        fullname = '%s %s' % (first_name, last_name)

        if not any([first_name, last_name]) and \
                    settings.SHIBBOLETH_REQUIRE_NAME_INFO:
            raise KeyError(_(astakos_messages.SHIBBOLETH_MISSING_NAME))

    except KeyError, e:
        # invalid shibboleth headers, redirect to login, display message
        logger.exception(e)
        messages.error(request, e.message)
        return HttpResponseRedirect(login_url(request))