Просмотр исходного кода

Fixes #13434: Randomly generate initial keys prior to the creation of new tokens

Jeremy Stretch 2 лет назад
Родитель
Сommit
a332adf962
1 измененных файлов с 8 добавлено и 2 удалено
  1. 8 2
      netbox/users/forms/model_forms.py

+ 8 - 2
netbox/users/forms/model_forms.py

@@ -111,8 +111,10 @@ class UserConfigForm(BootstrapMixin, forms.ModelForm, metaclass=UserConfigFormMe
 class UserTokenForm(BootstrapMixin, forms.ModelForm):
     key = forms.CharField(
         label=_('Key'),
-        required=False,
-        help_text=_("If no key is provided, one will be generated automatically.")
+        help_text=_(
+            'Keys must be at least 40 characters in length. <strong>Be sure to record your key</strong> prior to '
+            'submitting this form, as it may no longer be accessible once the token has been created.'
+        )
     )
     allowed_ips = SimpleArrayField(
         base_field=IPNetworkFormField(validators=[prefix_validator]),
@@ -140,6 +142,10 @@ class UserTokenForm(BootstrapMixin, forms.ModelForm):
         if self.instance.pk and not settings.ALLOW_TOKEN_RETRIEVAL:
             del self.fields['key']
 
+        # Generate an initial random key if none has been specified
+        if not self.instance.pk and not self.initial.get('key'):
+            self.initial['key'] = Token.generate_key()
+
 
 class TokenForm(UserTokenForm):
     user = forms.ModelChoiceField(