Esempio n. 1
0
def login_authorized(request):
    logger.debug("Redirect back from oauth!")
    if not settings.OAUTH_ENABLED:
        logger.error("OAuth is not enabled!")
        return HttpResponseRedirect('/')

    oauth = OAuth(key=settings.OAUTH_CLIENT_ID,
                  secret=settings.OAUTH_CLIENT_SECRET,
                  callback_url=settings.OAUTH_CALLBACK,
                  domain=settings.OAUTH_DOMAIN,
                  access_token_url=settings.OAUTH_ACCESS_TOKEN_URL,
                  authorize_url=settings.OAUTH_AUTHORIZE_URL,
                  scope=settings.OAUTH_DEFAULT_SCOPE)

    code = request.GET.get('code')
    state = request.GET.get('state')
    try:
        data = oauth.handle_oauth2_response(code,
                                            state,
                                            session=request.session)
        user_name = oauth.oauth_data(
            user_info_uri=settings.OAUTH_USER_INFO_URI,
            session=request.session)
        # extract user_name from oauth_data based on OAUTH_USERNAME_INFO_KEY and OAUTH_EXTRACT_USERNAME_FROM_EMAIL
        if settings.OAUTH_USERNAME_INFO_KEY:
            keys = settings.OAUTH_USERNAME_INFO_KEY.split()
            for key in keys:
                user_name = user_name[key]
        if settings.OAUTH_EXTRACT_USERNAME_FROM_EMAIL is not None and settings.OAUTH_EXTRACT_USERNAME_FROM_EMAIL == "TRUE":
            user_name = user_name.split("@")[0]

    except OAuthException as e:
        # failed to login for some reason, do something
        logger.error(traceback.format_exc())
        return render(request, 'oauth_failure.html', {
            "message": e.message,
        })

    except OAuthExpiredTokenException as e:
        # When auth.pinadmin.com returns a 401 error
        logger.error(traceback.format_exc())

        # remove access token from session cookie and redirect to / page
        # this will cause a re trigger of auth.pinadmin.com login process
        oauth.oauth_handler.token_remove(session=request.session)
        return HttpResponseRedirect("/")

    logger.debug("get user_name %s and data %s back from oauth!" %
                 (user_name, data))
    request.session['teletraan_user'] = user_name

    if data and 'origin_path' in data:
        return HttpResponseRedirect(data['origin_path'])

    return HttpResponseRedirect('/')
Esempio n. 2
0
def login_authorized(request):
    logger.debug("Redirect back from oauth!")
    if not settings.OAUTH_ENABLED:
        logger.error("OAuth is not enabled!")
        return HttpResponseRedirect('/')

    oauth = OAuth(
        key=settings.OAUTH_CLIENT_ID,
        secret=settings.OAUTH_CLIENT_SECRET,
        callback_url=settings.OAUTH_CALLBACK,
        domain=settings.OAUTH_DOMAIN,
        access_token_url=settings.OAUTH_ACCESS_TOKEN_URL,
        authorize_url=settings.OAUTH_AUTHORIZE_URL,
        scope=settings.OAUTH_DEFAULT_SCOPE
    )

    code = request.GET.get('code')
    state = request.GET.get('state')
    try:
        data = oauth.handle_oauth2_response(code, state, session=request.session)
        user_name = oauth.oauth_data(user_info_uri=settings.OAUTH_USER_INFO_URI, session=request.session)
        # extract user_name from oauth_data based on OAUTH_USERNAME_INFO_KEY and OAUTH_EXTRACT_USERNAME_FROM_EMAIL
        if settings.OAUTH_USERNAME_INFO_KEY is not None:
            keys = settings.OAUTH_USERNAME_INFO_KEY.split()
            for key in keys:
                user_name = user_name[key]
        if settings.OAUTH_EXTRACT_USERNAME_FROM_EMAIL is not None and settings.OAUTH_EXTRACT_USERNAME_FROM_EMAIL == "TRUE":
            user_name = user_name.split("@")[0]

    except OAuthException as e:
        # failed to login for some reason, do something
        logger.error(traceback.format_exc())
        return render(request, 'oauth_failure.html', {
            "message": e.message,
        })

    except OAuthExpiredTokenException as e:
        # When auth.pinadmin.com returns a 401 error
        logger.error(traceback.format_exc())

        # remove access token from session cookie and redirect to / page
        # this will cause a re trigger of auth.pinadmin.com login process
        oauth.oauth_handler.token_remove(session=request.session)
        return HttpResponseRedirect("/")

    logger.debug("get user_name %s and data %s back from oauth!" % (user_name, data))
    request.session['teletraan_user'] = user_name

    if data and 'origin_path' in data:
        return HttpResponseRedirect(data['origin_path'])

    return HttpResponseRedirect('/')
Esempio n. 3
0
def login_authorized(request):
    logger.debug("Redirect back from oauth!")
    if not settings.OAUTH_ENABLED:
        logger.error("OAuth is not enabled!")
        return HttpResponseRedirect('/')

    oauth = OAuth(key=settings.OAUTH_CLIENT_ID,
                  secret=settings.OAUTH_CLIENT_SECRET,
                  callback_url=settings.OAUTH_CALLBACK,
                  domain=settings.OAUTH_DOMAIN,
                  access_token_url=settings.OAUTH_ACCESS_TOKEN_URL,
                  authorize_url=settings.OAUTH_AUTHORIZE_URL,
                  scope=settings.OAUTH_DEFAULT_SCOPE)

    code = request.GET.get('code')
    state = request.GET.get('state')
    try:
        data = oauth.handle_oauth2_response(code,
                                            state,
                                            session=request.session)
        user_name = oauth.oauth_data(
            user_info_uri=settings.OAUTH_USER_INFO_URI,
            key=settings.OAUTH_USERNAME_INFO_KEY,
            session=request.session)['username']
    except OAuthException as e:
        # failed to login for some reason, do something
        logger.error(traceback.format_exc())
        return render(request, 'oauth_failure.html', {
            "message": e.message,
        })

    logger.debug("get user_name %s and data %s back from oauth!" %
                 (user_name, data))
    request.session['teletraan_user'] = user_name

    if data and 'origin_path' in data:
        return HttpResponseRedirect(data['origin_path'])

    return HttpResponseRedirect('/')
Esempio n. 4
0
def login_authorized(request):
    logger.debug("Redirect back from oauth!")
    if not settings.OAUTH_ENABLED:
        logger.error("OAuth is not enabled!")
        return HttpResponseRedirect('/')

    oauth = OAuth(
        key=settings.OAUTH_CLIENT_ID,
        secret=settings.OAUTH_CLIENT_SECRET,
        callback_url=settings.OAUTH_CALLBACK,
        domain=settings.OAUTH_DOMAIN,
        access_token_url=settings.OAUTH_ACCESS_TOKEN_URL,
        authorize_url=settings.OAUTH_AUTHORIZE_URL,
        scope=settings.OAUTH_DEFAULT_SCOPE
    )

    code = request.GET.get('code')
    state = request.GET.get('state')
    try:
        data = oauth.handle_oauth2_response(code, state, session=request.session)
        user_name = oauth.oauth_data(user_info_uri=settings.OAUTH_USER_INFO_URI,
                                     key=settings.OAUTH_USERNAME_INFO_KEY,
                                     session=request.session)['username']
    except OAuthException as e:
        # failed to login for some reason, do something
        logger.error(traceback.format_exc())
        return render(request, 'oauth_failure.html', {
            "message": e.message,
        })

    logger.debug("get user_name %s and data %s back from oauth!" % (user_name, data))
    request.session['teletraan_user'] = user_name

    if data and 'origin_path' in data:
        return HttpResponseRedirect(data['origin_path'])

    return HttpResponseRedirect('/')