{"record":{"id":"ffc3d55b2c73d154","repo":"theonedev/onedev","slug":"user-sign-up-is-disabled","errorCode":null,"errorMessage":"User sign-up is disabled","messagePattern":"User sign-up is disabled","errorType":"exception","errorClass":"UnauthenticatedException","httpStatus":401,"severity":"warning","filePath":"server-core/src/main/java/io/onedev/server/web/page/security/SignUpPage.java","lineNumber":47,"sourceCode":"import io.onedev.server.model.User;\nimport io.onedev.server.model.support.administration.SecuritySetting;\nimport io.onedev.server.persistence.TransactionService;\nimport io.onedev.server.security.SecurityUtils;\nimport io.onedev.server.util.Path;\nimport io.onedev.server.util.PathNode;\nimport io.onedev.server.util.patternset.PatternSet;\nimport io.onedev.server.web.editable.BeanContext;\nimport io.onedev.server.web.editable.BeanEditor;\nimport io.onedev.server.web.page.HomePage;\nimport io.onedev.server.web.page.simple.SimplePage;\n\npublic class SignUpPage extends SimplePage {\n\t\n\tpublic SignUpPage(PageParameters params) {\n\t\tsuper(params);\n\t\t\n\t\tif (!getSecuritySetting().isEnableSelfRegister())\n\t\t\tthrow new UnauthenticatedException(\"User sign-up is disabled\");\n\t\tif (getLoginUser() != null)\n\t\t\tthrow new IllegalStateException(\"Cannot sign up a user while signed in\");\n\t}\n\t\n\tprivate SecuritySetting getSecuritySetting() {\n\t\treturn OneDev.getInstance(SettingService.class).getSecuritySetting();\n\t}\n\t\n\t@Override\n\tprotected void onInitialize() {\n\t\tsuper.onInitialize();\n\n\t\tSignUpBean bean = new SignUpBean();\n\t\tBeanEditor editor = BeanContext.edit(\"editor\", bean, Sets.newHashSet(PROP_TYPE, PROP_NOTIFY_OWN_EVENTS), true);\n\t\t\n\t\tForm<?> form = new Form<Void>(\"form\") {\n\n\t\t\t@Override","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/web/page/security/SignUpPage.java#L29-L65","documentation":"SignUpPage's constructor rejects access when self-registration is disabled: if getSecuritySetting().isEnableSelfRegister() is false it throws UnauthenticatedException('User sign-up is disabled'), so the sign-up page only renders when open registration is turned on in security settings.","triggerScenarios":"Visiting the sign-up URL (directly or via a 'register' link) while SecuritySetting.enableSelfRegister is false — the default in many hardened installs or after an admin disabled open registration.","commonSituations":"Bookmarked sign-up page after an admin disabled self-registration; sharing a sign-up link with external users on an invitation-only server; fresh instance configured for SSO/LDAP-only provisioning.","solutions":["Ask an administrator to enable self-registration in Security Setting (Authentication section) if open sign-up is desired.","Use the admin's user-invitation or manual user creation flow instead.","Log in via the configured SSO/LDAP provider if accounts are provisioned there.","Navigate to login page; registration may be invitation-based only."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"boolean canRegister = OneDev.getInstance(SettingService.class)\n    .getSecuritySetting().isEnableSelfRegister();\nif (!canRegister) { /* hide sign-up link, show invitation/login path */ }","typeGuard":null,"tryCatchPattern":"try {\n  openSignUpPage();\n} catch (UnauthenticatedException e) {\n  // redirect to login page\n}","preventionTips":["Hide sign-up links when self-registration is disabled.","Discover the registration policy from settings before deep-linking.","Prefer admin invitations on locked-down instances.","After toggling enableSelfRegister, update any published links."],"tags":["registration","security-setting","access-control"],"backgroundTag":"feature-not-enabled","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"}