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

  1. Authenticate the request before running the query.
  2. Rewrite the query as 'assigned to "<username>"' for unattended use.
  3. Establish a user context programmatically before criteria evaluation.
  4. 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

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


AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06). Data as JSON: /api/errors/228b2526b2094b26. Report an issue: GitHub.