theonedev/onedev · error · NotAcceptableException

"Please login to perform this query"

Error message

"Please login to perform this query"

What it means

CreatedByMeCriteria.getPredicate() for workspace queries compares the workspace's user column against the current user. If User.get() is null (anonymous context), the "me" comparison is impossible and it throws NotAcceptableException("Please login to perform this query").

Source

Thrown at server-core/src/main/java/io/onedev/server/search/entity/workspace/CreatedByMeCriteria.java:29

import org.jspecify.annotations.Nullable;

import io.onedev.server.exception.NotAcceptableException;
import io.onedev.server.model.User;
import io.onedev.server.model.Workspace;
import io.onedev.server.security.SecurityUtils;
import io.onedev.server.util.ProjectScope;

public class CreatedByMeCriteria extends CreatedByCriteria {

	private static final long serialVersionUID = 1L;

	@Override
	public Predicate getPredicate(@Nullable ProjectScope projectScope, CriteriaQuery<?> query, From<Workspace, Workspace> from, CriteriaBuilder builder) {
		if (User.get() != null) {
			Path<User> attribute = from.get(Workspace.PROP_USER);
			return builder.equal(attribute, User.get());
		} else {
			throw new NotAcceptableException(_T("Please login to perform this query"));
		}
	}

	@Override
	public User getCreator() {
		return SecurityUtils.getUser();
	}

	@Override
	public boolean matches(Workspace workspace) {
		if (User.get() != null)
			return User.get().equals(workspace.getUser());
		else
			throw new NotAcceptableException(_T("Please login to perform this query"));
	}

	@Override
	public String toStringWithoutParens() {

View on GitHub (pinned to d44925c47c)

Solutions

  1. Authenticate (web login or access token) before issuing the workspace query.
  2. Rewrite the query as "created by <user>" naming the user explicitly.
  3. Impersonate a user in server-side jobs prior to building the predicate.
  4. Verify authentication/session setup so anonymous sessions don't reach user-relative workspace queries.

Example fix

// before
GET /~api/workspaces?query="created by me" // anonymous

// after
GET /~api/workspaces?query="created by john" \
  -H "Authorization: Bearer <pat>"
Defensive patterns

Strategy: try-catch

Validate before calling

if (SecurityUtils.getUser() == null) { authenticate(); }

Type guard

var user = SecurityUtils.getUser();
String query = user != null ? "created by me" : "created by " + explicitUser;

Try / catch

try { workspaces = queryWorkspaces("created by me"); }
catch (NotAcceptableException e) { promptLoginThenRetry(); }

Prevention

When it happens

Trigger: Running a workspace query containing the "created by me" rule via getPredicate() while unauthenticated or in a thread with no bound user.

Common situations: Anonymous REST queries on workspaces; automation without tokens; session loss/expiry before the query executes.

Related errors


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