theonedev/onedev · error · NotAcceptableException
Please login to perform this query
Error message
Please login to perform this query
What it means
MentionedMeCriteria.getPredicate() builds a DB predicate for pull requests where the current user was mentioned via MentionedUserCriteria. Because 'mentioned me' is user-relative, anonymous requests (User.get() == null) throw NotAcceptableException 'Please login to perform this query'.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/entity/pullrequest/MentionedMeCriteria.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 MentionedMeCriteria 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 MentionedUserCriteria(user);
}
@Override
public String toStringWithoutParens() {
return PullRequestQuery.getRuleName(PullRequestQueryLexer.MentionedMe);View on GitHub (pinned to d44925c47c)
Solutions
- Add valid credentials (session or access token) to the request.
- Replace 'me' with an explicit username in the query text.
- For anonymous-capable pages, detect the guest state and swap in a user-independent query.
Example fix
// before query: "mentioned" is "me" // 406 for guests // after query: "mentioned" is "bob"
Defensive patterns
Strategy: validation
Validate before calling
const isGuest = User.get() == null;
const q = isGuest ? 'mentioned is ("bob")' : 'mentioned is me'; Type guard
function requireAuthenticatedUser() { if (User.get() == null) throw new NotAcceptableException("login required"); return User.get(); } Try / catch
try { evaluateQuery(q); } catch (NotAcceptableException e) { swapToAnonymousQuery(); } Prevention
- Gate 'mentioned me' queries behind authenticated routes.
- Escape user input when composing mention criteria.
- Add integration tests that run queries both logged-in and anonymously.
When it happens
Trigger: Evaluating a pull request query containing 'mentioned me' on the DB/predicate path without an authenticated user.
Common situations: Anonymous REST calls, guests clicking a bookmarked query link with '~mentioned me', integrations that strip the session cookie.
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/915eec2bcc36d8f8.
Report an issue: GitHub.