registration: allow custom permission classes

This commit is contained in:
Stephen Stack 2017-02-12 17:35:28 -06:00
parent 9cf4c4e730
commit be17865b00
2 changed files with 10 additions and 2 deletions

View File

@ -1,5 +1,6 @@
from django.conf import settings from django.conf import settings
from rest_framework.permissions import AllowAny
from rest_auth.registration.serializers import ( from rest_auth.registration.serializers import (
RegisterSerializer as DefaultRegisterSerializer) RegisterSerializer as DefaultRegisterSerializer)
from ..utils import import_callable from ..utils import import_callable
@ -9,3 +10,10 @@ serializers = getattr(settings, 'REST_AUTH_REGISTER_SERIALIZERS', {})
RegisterSerializer = import_callable( RegisterSerializer = import_callable(
serializers.get('REGISTER_SERIALIZER', DefaultRegisterSerializer)) serializers.get('REGISTER_SERIALIZER', DefaultRegisterSerializer))
def register_permission_classes():
permission_classes = [AllowAny, ]
for klass in getattr(settings, 'REST_AUTH_REGISTER_PERMISSION_CLASSES', tuple()):
permission_classes.append(import_callable(klass))
return tuple(permission_classes)

View File

@ -22,7 +22,7 @@ from rest_auth.registration.serializers import (SocialLoginSerializer,
VerifyEmailSerializer) VerifyEmailSerializer)
from rest_auth.utils import jwt_encode from rest_auth.utils import jwt_encode
from rest_auth.views import LoginView from rest_auth.views import LoginView
from .app_settings import RegisterSerializer from .app_settings import RegisterSerializer, register_permission_classes
sensitive_post_parameters_m = method_decorator( sensitive_post_parameters_m = method_decorator(
sensitive_post_parameters('password1', 'password2') sensitive_post_parameters('password1', 'password2')
@ -31,7 +31,7 @@ sensitive_post_parameters_m = method_decorator(
class RegisterView(CreateAPIView): class RegisterView(CreateAPIView):
serializer_class = RegisterSerializer serializer_class = RegisterSerializer
permission_classes = (AllowAny, ) permission_classes = register_permission_classes()
token_model = TokenModel token_model = TokenModel
@sensitive_post_parameters_m @sensitive_post_parameters_m