theonedev/onedev · error · NotAcceptableException
Please login to perform this query
Error message
Please login to perform this query
What it means
AssignedToMeCriteria.getPredicate requires a current user to expand 'me' into the assignee criteria; without one it throws NotAcceptableException('Please login to perform this query'), since a user-relative predicate cannot be built anonymously.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/entity/pullrequest/AssignedToMeCriteria.java:29
import io.onedev.server.exception.NotAcceptableException;
import io.onedev.server.model.PullRequest;
import io.onedev.server.model.User;
import io.onedev.server.security.SecurityUtils;
import io.onedev.server.util.ProjectScope;
import io.onedev.server.util.criteria.Criteria;
public class AssignedToMeCriteria extends AssignedToCriteria {
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 User getUser() {
return SecurityUtils.getUser();
}
@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 AssignedToUserCriteria(user);View on GitHub (pinned to d44925c47c)
Solutions
- Authenticate the request before running the query.
- Rewrite the query as 'assigned to "<username>"' for unattended use.
- Establish a user context programmatically before criteria evaluation.
- Catch NotAcceptableException (HTTP 406) and redirect/ask the user to log in.
Example fix
// before "assigned to me" // anonymous -> 406 Please login // after "assigned to \"bob\"" called with a valid API token
Defensive patterns
Strategy: try-catch
Validate before calling
if (SecurityUtils.getUser() == null && queryText.contains("assigned to me")) throw new LoginRequiredException(); Type guard
boolean authed = SecurityUtils.getUser() != null;
Try / catch
try { result = queryPullRequests(query); } catch (NotAcceptableException e) { redirect to login; } Prevention
- Authenticate before user-relative queries
- Use assigned to "<user>" for unattended scripts
- Initialize user context in schedulers
- Map NotAcceptableException to login UI
When it happens
Trigger: Executing a pull-request query containing 'assigned to me' (getPredicate path) with no authenticated user: anonymous REST queries, scheduled jobs, or other non-web threads.
Common situations: Scripts using the REST query API without credentials; background services evaluating user-specific saved queries; tests lacking user context.
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/228b2526b2094b26.
Report an issue: GitHub.