• 
      

    Apply search access filters separately from the user's query.

    Review Request #15442 — Created Oct. 28, 2026 and updated

    Information

    Review Board
    release-8.x

    Reviewers

    The search form passes the user's query through to the search backend
    as-is, so that the documented query syntax works. It then added the
    Local Site and private review request filters to that same query
    string. A query that closed its own parentheses early, or that used OR
    in certain ways, could match results outside of those filters. That
    exposed private review requests and review requests on other Local
    Sites in search results.

    This change applies those filters as narrow queries instead. The search
    backend parses each narrow query on its own and uses it to filter the
    results, so nothing in the user's query can affect them. The query
    syntax is unchanged.

    Ran unit tests. Verified the new tests fail without the fix. Checked
    that AND, OR, NOT, phrase, field, and wildcard searches still return the
    expected results.

    Summary ID
    Apply search access filters separately from the user's query.
    The search form passes the user's query through to the search backend as-is, so that the documented query syntax works. It then added the Local Site and private review request filters to that same query string. A query that closed its own parentheses early, or that used OR in certain ways, could match results outside of those filters. That exposed private review requests and review requests on other Local Sites in search results. This change applies those filters as narrow queries instead. The search backend parses each narrow query on its own and uses it to filter the results, so nothing in the user's query can affect them. The query syntax is unchanged. Testing Done: Ran unit tests. Verified the new tests fail without the fix. Checked that AND, OR, NOT, phrase, field, and wildcard searches still return the expected results.
    rukrkxymsmvqqytnplyyovxvqpzwotqs
    Checks run (2 succeeded)
    flake8 passed.
    JSHint passed.