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
- Authenticate (web login or access token) before issuing the workspace query.
- Rewrite the query as "created by <user>" naming the user explicitly.
- Impersonate a user in server-side jobs prior to building the predicate.
- 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
- Require authentication for workspace queries.
- Use explicit "created by <user>" rules in API integrations.
- Refresh expired sessions before saved-query execution.
- Verify anonymous access is disabled where user-relative queries are expected.
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
- 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/3749f3bedd2dcbab.
Report an issue: GitHub.