{"record":{"id":"a8a304541cd6478f","repo":"theonedev/onedev","slug":"please-login-to-perform-this-query-a8a304","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/ToBeReviewedByMeCriteria.java","lineNumber":28,"sourceCode":"import org.jspecify.annotations.Nullable;\n\nimport io.onedev.server.exception.NotAcceptableException;\nimport io.onedev.server.model.PullRequest;\nimport io.onedev.server.model.User;\nimport io.onedev.server.util.ProjectScope;\nimport io.onedev.server.util.criteria.Criteria;\n\npublic class ToBeReviewedByMeCriteria extends Criteria<PullRequest> {\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 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\t\n\tprivate Criteria<PullRequest> getCriteria(User user) {\n\t\treturn new ToBeReviewedByUserCriteria(user);\n\t}\n\n\t@Override\n\tpublic String toStringWithoutParens() {\n\t\treturn PullRequestQuery.getRuleName(PullRequestQueryLexer.ToBeReviewedByMe);","sourceCodeStart":10,"sourceCodeEnd":46,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/search/entity/pullrequest/ToBeReviewedByMeCriteria.java#L10-L46","documentation":"ToBeReviewedByMeCriteria.getPredicate() builds the database predicate for the \"to be reviewed by me\" pull request rule. Because the rule depends on the current user, an anonymous context (User.get() == null) triggers NotAcceptableException(\"Please login to perform this query\") rather than returning an empty result.","triggerScenarios":"Running a pull request query with the \"to be reviewed by me\" criterion via getPredicate() while unauthenticated or in a thread without a bound user.","commonSituations":"Anonymous REST/GraphQL queries; automation executing stored queries without credentials; session expiry mid-request leading to a null user.","solutions":["Re-authenticate and retry the query with valid credentials.","Replace \"to be reviewed by me\" with \"to be reviewed by <user>\" in the query string.","Ensure scheduled/CI jobs impersonate a user (e.g. via access token) when running such queries.","Check SSO/session configuration so authenticated requests retain their user context."],"exampleFix":"// before\nGET /~api/pull-requests?query=\"to be reviewed by me\"\n\n// after\nGET /~api/pull-requests?query=\"to be reviewed by john\" \\\n  -H \"Authorization: Bearer <pat>\"","handlingStrategy":"try-catch","validationCode":"if (SecurityUtils.getUser() == null) { authenticateFirst(); }","typeGuard":"var user = SecurityUtils.getUser();\nString rule = user != null ? \"to be reviewed by me\" : \"to be reviewed by \" + explicitUser;","tryCatchPattern":"try { result = query(\"to be reviewed by me\"); }\ncatch (NotAcceptableException e) { throw new LoginRequiredException(\"Authenticate to use 'me' query rules\"); }","preventionTips":["Send access tokens with all REST/GraphQL calls.","Avoid 'me' rules in stored/shared queries used by automation.","Check session validity before query execution.","Configure SSO to preserve user identity across requests."],"tags":["authentication","query","pull-request"],"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"}