{"record":{"id":"228b2526b2094b26","repo":"theonedev/onedev","slug":"please-login-to-perform-this-query-228b25","errorCode":null,"errorMessage":"Please login to perform this query","messagePattern":"Please login to perform this query","errorType":"http","errorClass":"NotAcceptableException","httpStatus":406,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/search/entity/pullrequest/AssignedToMeCriteria.java","lineNumber":29,"sourceCode":"\nimport io.onedev.server.exception.NotAcceptableException;\nimport io.onedev.server.model.PullRequest;\nimport io.onedev.server.model.User;\nimport io.onedev.server.security.SecurityUtils;\nimport io.onedev.server.util.ProjectScope;\nimport io.onedev.server.util.criteria.Criteria;\n\npublic class AssignedToMeCriteria extends AssignedToCriteria {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\t@Override\n\tpublic Predicate getPredicate(@Nullable ProjectScope projectScope, CriteriaQuery<?> query, From<PullRequest, PullRequest> from, CriteriaBuilder builder) {\n\t\tvar user = User.get();\n\t\tif (user != null) \n\t\t\treturn getCriteria(user).getPredicate(projectScope, query, from, builder);\n\t\telse \n\t\t\tthrow new NotAcceptableException(_T(\"Please login to perform this query\"));\n\t}\n\n\t@Override\n\tpublic User getUser() {\n\t\treturn SecurityUtils.getUser();\n\t}\n\n\t@Override\n\tpublic boolean matches(PullRequest request) {\n\t\tvar user = User.get();\n\t\tif (user != null)\n\t\t\treturn getCriteria(user).matches(request);\n\t\telse \n\t\t\tthrow new NotAcceptableException(_T(\"Please login to perform this query\"));\n\t}\n\n\tprivate Criteria<PullRequest> getCriteria(User user) {\n\t\treturn new AssignedToUserCriteria(user);","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/search/entity/pullrequest/AssignedToMeCriteria.java#L11-L47","documentation":"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.","triggerScenarios":"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.","commonSituations":"Scripts using the REST query API without credentials; background services evaluating user-specific saved queries; tests lacking user context.","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."],"exampleFix":"// before\n\"assigned to me\" // anonymous -> 406 Please login\n// after\n\"assigned to \\\"bob\\\"\" called with a valid API token","handlingStrategy":"try-catch","validationCode":"if (SecurityUtils.getUser() == null && queryText.contains(\"assigned to me\")) throw new LoginRequiredException();","typeGuard":"boolean authed = SecurityUtils.getUser() != null;","tryCatchPattern":"try { result = queryPullRequests(query); } catch (NotAcceptableException e) { redirect to login; }","preventionTips":["Authenticate before user-relative queries","Use assigned to \"<user>\" for unattended scripts","Initialize user context in schedulers","Map NotAcceptableException to login UI"],"tags":["authentication","pull-request","search"],"backgroundTag":"authentication-required","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}