Browse Source

feat(api): allow disabling LPS domain registration during sign-up

Peter Thomassen 1 year ago
parent
commit
4026c8ceac
2 changed files with 11 additions and 0 deletions
  1. 3 0
      api/api/settings.py
  2. 8 0
      api/desecapi/serializers/users.py

+ 3 - 0
api/api/settings.py

@@ -224,6 +224,9 @@ USER_ACTIVATION_REQUIRED = True
 VALIDITY_PERIOD_VERIFICATION_SIGNATURE = timedelta(
 VALIDITY_PERIOD_VERIFICATION_SIGNATURE = timedelta(
     hours=int(os.environ.get("DESECSTACK_API_AUTHACTION_VALIDITY", "0"))
     hours=int(os.environ.get("DESECSTACK_API_AUTHACTION_VALIDITY", "0"))
 )
 )
+REGISTER_LPS_ON_SIGNUP = bool(
+    int(os.environ.get("DESECSTACK_API_REGISTER_LPS_ON_SIGNUP", "1"))
+)
 
 
 # CAPTCHA
 # CAPTCHA
 CAPTCHA_VALIDITY_PERIOD = timedelta(hours=24)
 CAPTCHA_VALIDITY_PERIOD = timedelta(hours=24)

+ 8 - 0
api/desecapi/serializers/users.py

@@ -1,3 +1,4 @@
+from django.conf import settings
 from django.contrib.auth.password_validation import validate_password
 from django.contrib.auth.password_validation import validate_password
 from rest_framework import serializers
 from rest_framework import serializers
 
 
@@ -83,6 +84,13 @@ class RegisterAccountSerializer(UserSerializer):
                 serializer.default_error_messages["name_unavailable"],
                 serializer.default_error_messages["name_unavailable"],
                 code="name_unavailable",
                 code="name_unavailable",
             )
             )
+        if (
+            not settings.REGISTER_LPS_ON_SIGNUP
+            and DomainSerializer.Meta.model(name=value).is_locally_registrable
+        ):
+            raise serializers.ValidationError(
+                "Registration during sign-up disabled; please create account without a domain name.",
+            )
         return value
         return value
 
 
     def create(self, validated_data):
     def create(self, validated_data):