コード例 #1
0
def before_request_func():
    g.request_params = request.args if request.method == 'GET' else request.form
    g.cookies_disabled = False

    # Generate session values for user if unavailable
    if not valid_user_session(session):
        session['config'] = json.load(open(app.config['DEFAULT_CONFIG'])) \
            if os.path.exists(app.config['DEFAULT_CONFIG']) else {'url': request.url_root}
        session['uuid'] = str(uuid.uuid4())
        session['fernet_keys'] = generate_user_keys(True)

        # Flag cookies as possibly disabled in order to prevent against
        # unnecessary session directory expansion
        g.cookies_disabled = True

    if session['uuid'] not in app.user_elements:
        app.user_elements.update({session['uuid']: 0})

    # Always redirect to https if HTTPS_ONLY is set (otherwise default to False)
    https_only = os.getenv('HTTPS_ONLY', False)

    if https_only and request.url.startswith('http://'):
        return redirect(request.url.replace('http://', 'https://', 1),
                        code=308)

    g.user_config = Config(**session['config'])

    if not g.user_config.url:
        g.user_config.url = request.url_root.replace(
            'http://', 'https://') if https_only else request.url_root

    g.user_request = Request(request.headers.get('User-Agent'),
                             language=g.user_config.lang_search)
    g.app_location = g.user_config.url
コード例 #2
0
ファイル: test_misc.py プロジェクト: Daniellop1/ISearch
def test_request_key_generation(client):
    rv = client.get('/')
    cookie = rv.headers['Set-Cookie']

    rv = client.get('/search?q=test+1', headers={'Cookie': cookie})
    assert rv._status_code == 200

    with client.session_transaction() as session:
        assert valid_user_session(session)
        text_key = session['fernet_keys']['text_key']

    rv = client.get('/search?q=test+2', headers={'Cookie': cookie})
    assert rv._status_code == 200

    with client.session_transaction() as session:
        assert valid_user_session(session)
        assert text_key not in session['fernet_keys']['text_key']
コード例 #3
0
ファイル: test_misc.py プロジェクト: Daniellop1/ISearch
def test_valid_session(client):
    assert not valid_user_session({'fernet_keys': '', 'config': {}})
    with client.session_transaction() as session:
        assert valid_user_session(session)