diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index 8a9e4d035a157d4d88774944636679250a3a452d..aa20122bff05c234df71ef99db5a6fda318e10cd 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -1072,11 +1072,6 @@ class PersonInvitation(AbstractBaseInvitation, PureDjangoModel):
         Person, on_delete=models.CASCADE, blank=True, related_name="invitation", null=True
     )
 
-    @classmethod
-    def create(cls, email, inviter=None, **kwargs):
-        instance = cls._default_manager.create(email=email, inviter=inviter, **kwargs)
-        return instance
-
     def __str__(self) -> str:
         return f"{self.email} ({self.inviter})"
 
diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py
index c16032349e58dc4134e6bba064864e1724f688fe..15ca0e67478ed6483a8cd0df03aa38c1529b8762 100644
--- a/aleksis/core/preferences.py
+++ b/aleksis/core/preferences.py
@@ -264,14 +264,6 @@ class SignupEnabled(BooleanPreference):
     verbose_name = _("Enable signup")
 
 
-@site_preferences_registry.register
-class SignupOpen(BooleanPreference):
-    section = auth
-    name = "signup_open"
-    default = False
-    verbose_name = _("Signup open for everyone")
-
-
 @site_preferences_registry.register
 class InviteEnabled(BooleanPreference):
     section = auth
diff --git a/aleksis/core/rules.py b/aleksis/core/rules.py
index 0a0dde24f9b22766f0c686ffaa94c980bbb05012..9fc08709ec48e74f0a3801262d29a527764ac323 100644
--- a/aleksis/core/rules.py
+++ b/aleksis/core/rules.py
@@ -313,18 +313,12 @@ edit_default_dashboard_predicate = has_person & has_global_perm("core.edit_defau
 rules.add_perm("core.edit_default_dashboard_rule", edit_default_dashboard_predicate)
 
 # django-allauth
-can_register_predicate = is_site_preference_set(
-    section="auth", pref="signup_enabled"
-) & is_site_preference_set(section="auth", pref="signup_open")
+can_register_predicate = is_site_preference_set(section="auth", pref="signup_enabled")
 rules.add_perm("core.can_register", can_register_predicate)
 
 can_change_password_predicate = is_site_preference_set(section="auth", pref="allow_password_change")
 rules.add_perm("core.can_change_password", can_change_password_predicate)
 
-# django-invitations
-invite_enabled_predicate = is_site_preference_set(section="auth", pref="invite_enabled")
-rules.add_perm("core.invite_enabled", invite_enabled_predicate)
-
 # OAuth2 permissions
 create_oauthapplication_predicate = has_person & has_global_perm("core.add_oauthapplication")
 rules.add_perm("core.create_oauthapplication_rule", create_oauthapplication_predicate)
diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py
index 5634286b0dffa0be97b58d70d82b43e7ef3d8e13..94971e5c5bbc11277afc245720b12ed8ab979a01 100644
--- a/aleksis/core/settings.py
+++ b/aleksis/core/settings.py
@@ -352,11 +352,17 @@ ACCOUNT_UNIQUE_EMAIL = _settings.get("auth.login.registration.unique_email", Tru
 
 # Configuration for django-invitations
 
+# Use custom account adapter
 ACCOUNT_ADAPTER = "invitations.models.InvitationsAdapter"
+# Expire invitations are configured amout of days
 INVITATIONS_INVITATION_EXPIRY = _settings.get("auth.invitation.expiry", 3)
+# Use email prefix configured for django-allauth
 INVITATIONS_EMAIL_SUBJECT_PREFIX = ACCOUNT_EMAIL_SUBJECT_PREFIX
+# Use custom invitation model
 INVITATIONS_INVITATION_MODEL = "core.PersonInvitation"
+# Display error message if invitation code is invalid
 INVITATIONS_GONE_ON_ACCEPT_ERROR = False
+# Mark invitation as accepted after signup
 INVITATIONS_ACCEPT_INVITE_AFTER_SIGNUP = True
 
 # Configuration for OAuth2 provider
diff --git a/aleksis/core/views.py b/aleksis/core/views.py
index 9bdc2ae48d95abcf051c0ae7b2d4e134dad52a9d..ecbfdbb4c157d2760de973ccf33c3ebcc10f2cfd 100644
--- a/aleksis/core/views.py
+++ b/aleksis/core/views.py
@@ -1407,9 +1407,7 @@ class AccountRegisterView(SignupView):
     success_url = "index"
 
     def dispatch(self, request, *args, **kwargs):
-        if not test_rule("core.can_register") and not request.session.get(
-            "account_verified_email"
-        ):
+        if not test_rule("core.can_register") and not request.session.get("account_verified_email"):
             raise PermissionDenied()
         return super(AccountRegisterView, self).dispatch(request, *args, **kwargs)