Added required permission and authentication classes

This commit is contained in:
Jonas Krüger Svensson 2019-12-11 11:37:37 +01:00
parent de9f1d56c4
commit 724c54e6a8
2 changed files with 12 additions and 2 deletions

View File

@ -39,9 +39,11 @@ DEFAULTS = {
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
],
'REQUIRED_AUTHENTICATION_CLASSES': [],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
'REQUIRED_PERMISSION_CLASSES': [],
'DEFAULT_THROTTLE_CLASSES': [],
'DEFAULT_CONTENT_NEGOTIATION_CLASS': 'rest_framework.negotiation.DefaultContentNegotiation',
'DEFAULT_METADATA_CLASS': 'rest_framework.metadata.SimpleMetadata',
@ -132,7 +134,9 @@ IMPORT_STRINGS = [
'DEFAULT_RENDERER_CLASSES',
'DEFAULT_PARSER_CLASSES',
'DEFAULT_AUTHENTICATION_CLASSES',
'REQUIRED_AUTHENTICATION_CLASSES',
'DEFAULT_PERMISSION_CLASSES',
'REQUIRED_PERMISSION_CLASSES',
'DEFAULT_THROTTLE_CLASSES',
'DEFAULT_CONTENT_NEGOTIATION_CLASS',
'DEFAULT_METADATA_CLASS',

View File

@ -107,8 +107,10 @@ class APIView(View):
renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES
parser_classes = api_settings.DEFAULT_PARSER_CLASSES
authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES
required_authentication_classes = api_settings.REQUIRED_AUTHENTICATION_CLASSES
throttle_classes = api_settings.DEFAULT_THROTTLE_CLASSES
permission_classes = api_settings.DEFAULT_PERMISSION_CLASSES
required_permission_classes = api_settings.REQUIRED_PERMISSION_CLASSES
content_negotiation_class = api_settings.DEFAULT_CONTENT_NEGOTIATION_CLASS
metadata_class = api_settings.DEFAULT_METADATA_CLASS
versioning_class = api_settings.DEFAULT_VERSIONING_CLASS
@ -269,13 +271,17 @@ class APIView(View):
"""
Instantiates and returns the list of authenticators that this view can use.
"""
return [auth() for auth in self.authentication_classes]
required = [auth() for auth in self.required_authentication_classes]
required.extend([auth() for auth in self.authentication_classes])
return required
def get_permissions(self):
"""
Instantiates and returns the list of permissions that this view requires.
"""
return [permission() for permission in self.permission_classes]
required = [permission() for permission in self.required_permission_classes]
required.extend([permission() for permission in self.permission_classes])
return required
def get_throttles(self):
"""