theonedev/onedev · error · NotAcceptableException
"Please login to perform this query"
Error message
"Please login to perform this query"
What it means
ToBeMergedByMeCriteria.getPredicate() translates the "to be merged by me" pull request rule into a JPA predicate. The rule is inherently user-relative; if User.get() is null (anonymous context) it throws NotAcceptableException("Please login to perform this query") because there is no user to filter by.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/entity/pullrequest/ToBeMergedByMeCriteria.java:28
import org.jspecify.annotations.Nullable;
import io.onedev.server.exception.NotAcceptableException;
import io.onedev.server.model.PullRequest;
import io.onedev.server.model.User;
import io.onedev.server.util.ProjectScope;
import io.onedev.server.util.criteria.Criteria;
public class ToBeMergedByMeCriteria extends Criteria<PullRequest> {
private static final long serialVersionUID = 1L;
@Override
public Predicate getPredicate(@Nullable ProjectScope projectScope, CriteriaQuery<?> query, From<PullRequest, PullRequest> from, CriteriaBuilder builder) {
var user = User.get();
if (user != null)
return getCriteria(user).getPredicate(projectScope, query, from, builder);
else
throw new NotAcceptableException(_T("Please login to perform this query"));
}
@Override
public boolean matches(PullRequest request) {
var user = User.get();
if (user != null)
return getCriteria(user).matches(request);
else
throw new NotAcceptableException(_T("Please login to perform this query"));
}
private Criteria<PullRequest> getCriteria(User user) {
return new ToBeMergedByUserCriteria(user);
}
@Override
public String toStringWithoutParens() {
return PullRequestQuery.getRuleName(PullRequestQueryLexer.ToBeMergedByMe);View on GitHub (pinned to d44925c47c)
Solutions
- Authenticate the client (login or access token) before running the query.
- Use the explicit "to be merged by <user>" rule (ToBeMergedByUserCriteria) instead of "me".
- Set up an impersonated user context in server-side automation before query evaluation.
- Verify auth configuration (SSO/session) so anonymous users cannot submit user-relative queries.
Example fix
// before String query = "to be merged by me"; // after (API, anonymous-safe) String query = "to be merged by john"; // or authenticate the request
Defensive patterns
Strategy: validation
Validate before calling
if (SecurityUtils.getUser() == null) throw new LoginRequiredException(); // client-side pre-check
Type guard
var user = SecurityUtils.getUser(); String query = user != null ? "to be merged by me" : "to be merged by " + fallbackUserName;
Try / catch
try { runQuery("to be merged by me"); }
catch (NotAcceptableException e) { reauthenticate(); runQuery("to be merged by " + currentUser.getName()); } Prevention
- Verify authentication before issuing user-relative queries.
- Store queries with explicit usernames in automation, not "me".
- Refresh expired sessions/tokens before scheduled query runs.
- Ensure reverse proxies forward auth headers to OneDev.
When it happens
Trigger: Executing a pull request query containing "to be merged by me" through getPredicate() while the request is unauthenticated or the thread lacks a user context.
Common situations: Anonymous dashboard/API queries; saved queries executed by integration scripts without tokens; proxies stripping authentication before OneDev.
Related errors
- Please login to perform this query
- Please login to perform this query
- Please login to perform this query
- Please login to perform this query
- "Please login to perform this query"
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/9fc7a9dde7d1d859.
Report an issue: GitHub.