diff --git a/src/pretix/plugins/stripe/forms.py b/src/pretix/plugins/stripe/forms.py index 341d853c98..92d45d2958 100644 --- a/src/pretix/plugins/stripe/forms.py +++ b/src/pretix/plugins/stripe/forms.py @@ -2,19 +2,22 @@ from django import forms from django.utils.translation import ugettext_lazy as _ -class StripeKeyValidator(): +class StripeKeyValidator: def __init__(self, prefix): - assert isinstance(prefix, str) assert len(prefix) > 0 - self._prefix = prefix + if isinstance(prefix, list): + self._prefixes = prefix + else: + self._prefixes = [prefix] + assert isinstance(prefix, str) def __call__(self, value): - if not value.startswith(self._prefix): + if not any(value.startswith(p) for p in self._prefixes): raise forms.ValidationError( _('The provided key "%(value)s" does not look valid. It should start with "%(prefix)s".'), - code='invalid-stripe-secret-key', + code='invalid-stripe-key', params={ 'value': value, - 'prefix': self._prefix, + 'prefix': self._prefixes[0], }, ) diff --git a/src/pretix/plugins/stripe/payment.py b/src/pretix/plugins/stripe/payment.py index fbf844e5f1..f1ea69dbbd 100644 --- a/src/pretix/plugins/stripe/payment.py +++ b/src/pretix/plugins/stripe/payment.py @@ -136,7 +136,7 @@ class StripeSettingsHolder(BasePaymentProvider): forms.CharField( label=_('Secret key'), validators=( - StripeKeyValidator('sk_'), + StripeKeyValidator(['sk_', 'rk_']), ), )), ] diff --git a/src/pretix/plugins/stripe/signals.py b/src/pretix/plugins/stripe/signals.py index 1b8c380e3a..73f21a761f 100644 --- a/src/pretix/plugins/stripe/signals.py +++ b/src/pretix/plugins/stripe/signals.py @@ -106,7 +106,7 @@ def register_global_settings(sender, **kwargs): label=_('Stripe Connect: Secret key'), required=False, validators=( - StripeKeyValidator('sk_live_'), + StripeKeyValidator(['sk_live_', 'rk_live_']), ), )), ('payment_stripe_connect_publishable_key', forms.CharField( @@ -120,7 +120,7 @@ def register_global_settings(sender, **kwargs): label=_('Stripe Connect: Secret key (test)'), required=False, validators=( - StripeKeyValidator('sk_test_'), + StripeKeyValidator(['sk_test_', 'rk_test_']), ), )), ('payment_stripe_connect_test_publishable_key', forms.CharField( diff --git a/src/tests/plugins/stripe/test_settings.py b/src/tests/plugins/stripe/test_settings.py index bc9d981b1d..9ac3874fd5 100644 --- a/src/tests/plugins/stripe/test_settings.py +++ b/src/tests/plugins/stripe/test_settings.py @@ -7,6 +7,7 @@ from pretix.base.models import Event, Organizer, Team, User valid_secret_key_values = [ 'sk_', 'sk_foo', + 'rk_bla', ] valid_publishable_key_values = [