{"record":{"id":"eaef41c5f5c2f3ca","repo":"theonedev/onedev","slug":"invalid-invitation-code","errorCode":null,"errorMessage":"Invalid invitation code","messagePattern":"Invalid invitation code","errorType":"exception","errorClass":"ExplicitException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/web/page/security/CreateUserFromInvitationPage.java","lineNumber":53,"sourceCode":"import io.onedev.server.web.page.simple.SimplePage;\n\npublic class CreateUserFromInvitationPage extends SimplePage {\n\n\tprivate final String PARAM_INVITATION_CODE = \"invitationCode\";\n\t\n\tprivate final IModel<UserInvitation> invitationModel;\n\t\n\tpublic CreateUserFromInvitationPage(PageParameters params) {\n\t\tsuper(params);\n\t\t\n\t\tString invitationCode = params.get(PARAM_INVITATION_CODE).toString();\n\t\tinvitationModel = new LoadableDetachableModel<UserInvitation>() {\n\n\t\t\t@Override\n\t\t\tprotected UserInvitation load() {\n\t\t\t\tUserInvitation invitation = getInvitationService().findByInvitationCode(invitationCode);\n\t\t\t\tif (invitation == null)\n\t\t\t\t\tthrow new ExplicitException(_T(\"Invalid invitation code\"));\n\t\t\t\telse if (getEmailAddressService().findByValue(invitation.getEmailAddress()) != null)\n\t\t\t\t\tthrow new ExplicitException(_T(\"Email address already used: \") + invitation.getEmailAddress());\n\t\t\t\telse\n\t\t\t\t\treturn invitation;\n\t\t\t}\n\t\t\t\n\t\t};\n\t}\n\t\n\t@Override\n\tprotected void onInitialize() {\n\t\tsuper.onInitialize();\n\n\t\tUser newUser = new User();\n\t\tBeanEditor editor = BeanContext.edit(\"editor\", newUser, Sets.newHashSet(PROP_TYPE, PROP_NOTIFY_OWN_EVENTS), true);\n\t\t\n\t\tForm<?> form = new Form<Void>(\"form\") {\n","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/web/page/security/CreateUserFromInvitationPage.java#L35-L71","documentation":"CreateUserFromInvitationPage loads a UserInvitation by the invitationCode page parameter. If getInvitationService().findByInvitationCode(code) returns null, it throws ExplicitException(_T(\"Invalid invitation code\")) — the code is unknown, meaning it was never issued, already consumed/deleted, or mistyped.","triggerScenarios":"Visiting the create-user-from-invitation URL with an invitationCode that does not match any stored UserInvitation — wrong/mistyped code, invitation already used and removed, or invitation deleted by an administrator.","commonSituations":"Reusing an invitation link after the invited account was already created; truncated code when copying the email link; admin purged expired invitations; server data restored/migrated losing invitations.","solutions":["Request a fresh invitation link from the administrator.","Check the invitationCode parameter in the URL is complete and not truncated or altered.","If you already accepted the invitation, log in with the created account instead.","Ask an admin to re-issue the invitation (Server Admin > invitations/user management)."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"UserInvitation inv = invitationService.findByInvitationCode(code);\nif (inv == null) { /* request a new invitation before opening the form */ }","typeGuard":null,"tryCatchPattern":"try {\n  openInvitationPage(code);\n} catch (ExplicitException e) {\n  // show 'request a new invitation' UI\n}","preventionTips":["Use invitation links exactly as issued, single-use.","Request fresh links rather than reusing old ones.","Admins: avoid deleting invitations still pending acceptance.","Copy the full URL from the invitation email."],"tags":["invitation","authentication","onboarding"],"backgroundTag":"invalid-invitation-code","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}