{"record":{"id":"6a8192b2aba7f4ec","repo":"theonedev/onedev","slug":"please-login-to-perform-this-query-6a8192","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/issue/SubmittedByMeCriteria.java","lineNumber":29,"sourceCode":"import org.jspecify.annotations.Nullable;\n\nimport io.onedev.server.exception.NotAcceptableException;\nimport io.onedev.server.model.Issue;\nimport io.onedev.server.model.User;\nimport io.onedev.server.security.SecurityUtils;\nimport io.onedev.server.util.ProjectScope;\n\npublic class SubmittedByMeCriteria extends SubmittedByCriteria {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\t@Override\n\tpublic Predicate getPredicate(@Nullable ProjectScope projectScope, CriteriaQuery<?> query, From<Issue, Issue> from, CriteriaBuilder builder) {\n\t\tif (User.get() != null) {\n\t\t\tPath<User> attribute = from.get(Issue.PROP_SUBMITTER);\n\t\t\treturn builder.equal(attribute, User.get());\n\t\t} else {\n\t\t\tthrow new NotAcceptableException(_T(\"Please login to perform this query\"));\n\t\t}\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(Issue issue) {\n\t\tif (User.get() != null)\n\t\t\treturn User.get().equals(issue.getSubmitter());\n\t\telse\n\t\t\tthrow new NotAcceptableException(_T(\"Please login to perform this query\"));\n\t}\n\n\t@Override\n\tpublic String toStringWithoutParens() {","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/search/entity/issue/SubmittedByMeCriteria.java#L11-L47","documentation":"SubmittedByMeCriteria.getPredicate builds a predicate matching issues submitted by the current user (User.get()). Without an authenticated user it throws NotAcceptableException 'Please login to perform this query', as 'me' is unresolved.","triggerScenarios":"Running an issue query with the 'submitted by me' criterion while anonymous — unauthenticated REST issue queries or sessions without a login.","commonSituations":"Anonymous dashboards or API integrations lacking credentials executing saved queries containing 'submitted by me'; expired sessions falling back to anonymous.","solutions":["Authenticate the request (session login or API token in Authorization header).","Replace 'submitted by me' with an explicit submitter criterion for anonymous/automation use.","Check user context before running me-based queries and redirect to login.","Catch NotAcceptableException and return HTTP 406 prompting authentication."],"exampleFix":"// before\ncurl \"http://server/api/issues?query=submitted by me\"\n// after\ncurl -H \"Authorization: Bearer <token>\" \"http://server/api/issues?query=submitted by me\"","handlingStrategy":"validation","validationCode":"if (SecurityUtils.getUser() == null)\n    throw new NotAcceptableException(\"Please login to perform this query\");","typeGuard":"User current = User.get();\nboolean canRunMeQuery = current != null;","tryCatchPattern":"try {\n    List<Issue> issues = query.find();\n} catch (NotAcceptableException e) {\n    redirectToLogin();\n}","preventionTips":["Use service-account tokens for automated queries containing 'submitted by me'.","Detect expired sessions and re-authenticate before retrying queries.","Prefer explicit submitter criteria in anonymous-facing contexts."],"tags":["authentication","query-context","issue-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"}