theonedev/onedev · error · NotAcceptableException
Please login to perform this query
Error message
Please login to perform this query
What it means
PublishedByMeCriteria.getPredicate builds a JPA predicate matching packs published by the current user. If User.get() returns null (no authenticated user in context), it throws NotAcceptableException('Please login to perform this query') because the criterion is inherently user-relative.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/entity/pack/PublishedByMeCriteria.java:29
import org.jspecify.annotations.Nullable;
import io.onedev.server.exception.NotAcceptableException;
import io.onedev.server.model.Pack;
import io.onedev.server.model.User;
import io.onedev.server.security.SecurityUtils;
import io.onedev.server.util.ProjectScope;
public class PublishedByMeCriteria extends PublishedByCriteria {
private static final long serialVersionUID = 1L;
@Override
public Predicate getPredicate(@Nullable ProjectScope projectScope, CriteriaQuery<?> query, From<Pack, Pack> from, CriteriaBuilder builder) {
if (User.get() != null) {
Path<User> attribute = from.get(Pack.PROP_USER);
return builder.equal(attribute, User.get());
} else {
throw new NotAcceptableException(_T("Please login to perform this query"));
}
}
@Override
public User getUser() {
return SecurityUtils.getUser();
}
@Override
public boolean matches(Pack pack) {
if (User.get() != null)
return User.get().equals(pack.getUser());
else
throw new NotAcceptableException(_T("Please login to perform this query"));
}
@Override
public String toStringWithoutParens() {View on GitHub (pinned to d44925c47c)
Solutions
- Authenticate (login or API token) before running the query
- Rewrite the criterion as 'published by <specific user>' to avoid current-user dependency
- Ensure API clients send Authorization headers on every request
- Impersonate/bind a user when evaluating queries in background threads
Example fix
// before curl http://onedev/api/query/packs?query="published by me" // after curl -H "Authorization: Bearer <token>" 'http://onedev/api/query/packs?query=published%20by%20me'
Defensive patterns
Strategy: type-guard
Validate before calling
if (User.get() == null) throw new AuthRequiredError("login required for 'published by me' pack query"); Type guard
function isAuthenticated(): boolean { return io.onedev.server.model.User.get() != null; } Try / catch
try { runPackQuery(q); } catch (NotAcceptableException e) { if (e.getMessage().contains("Please login")) { reauthenticate(); retry(); } else throw e; } Prevention
- Send auth tokens with every pack query API call
- Replace 'published by me' with explicit user criteria in scripts
- Restore sessions before re-running saved queries
When it happens
Trigger: Executing a pack query containing 'published by me' while the request is anonymous — no session, expired login, missing API token, or evaluation on a thread without a bound user.
Common situations: Anonymous REST access to pack queries; expired browser sessions; CI scripts calling the API without tokens; background jobs running user-relative queries.
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/c121c3b997658c52.
Report an issue: GitHub.