Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/rest_framework_simplejwt/settings.py: 55%

23 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1from datetime import timedelta 

2 

3from django.conf import settings 

4from django.test.signals import setting_changed 

5from django.utils.translation import gettext_lazy as _ 

6from rest_framework.settings import APISettings as _APISettings 

7 

8from .utils import format_lazy 

9 

10USER_SETTINGS = getattr(settings, "SIMPLE_JWT", None) 

11 

12DEFAULTS = { 

13 "ACCESS_TOKEN_LIFETIME": timedelta(minutes=5), 

14 "REFRESH_TOKEN_LIFETIME": timedelta(days=1), 

15 "ROTATE_REFRESH_TOKENS": False, 

16 "BLACKLIST_AFTER_ROTATION": False, 

17 "UPDATE_LAST_LOGIN": False, 

18 "ALGORITHM": "HS256", 

19 "SIGNING_KEY": settings.SECRET_KEY, 

20 "VERIFYING_KEY": "", 

21 "AUDIENCE": None, 

22 "ISSUER": None, 

23 "JSON_ENCODER": None, 

24 "JWK_URL": None, 

25 "LEEWAY": 0, 

26 "AUTH_HEADER_TYPES": ("Bearer",), 

27 "AUTH_HEADER_NAME": "HTTP_AUTHORIZATION", 

28 "USER_ID_FIELD": "id", 

29 "USER_ID_CLAIM": "user_id", 

30 "USER_AUTHENTICATION_RULE": "rest_framework_simplejwt.authentication.default_user_authentication_rule", 

31 "AUTH_TOKEN_CLASSES": ("rest_framework_simplejwt.tokens.AccessToken",), 

32 "TOKEN_TYPE_CLAIM": "token_type", 

33 "JTI_CLAIM": "jti", 

34 "TOKEN_USER_CLASS": "rest_framework_simplejwt.models.TokenUser", 

35 "SLIDING_TOKEN_REFRESH_EXP_CLAIM": "refresh_exp", 

36 "SLIDING_TOKEN_LIFETIME": timedelta(minutes=5), 

37 "SLIDING_TOKEN_REFRESH_LIFETIME": timedelta(days=1), 

38 "TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.TokenObtainPairSerializer", 

39 "TOKEN_REFRESH_SERIALIZER": "rest_framework_simplejwt.serializers.TokenRefreshSerializer", 

40 "TOKEN_VERIFY_SERIALIZER": "rest_framework_simplejwt.serializers.TokenVerifySerializer", 

41 "TOKEN_BLACKLIST_SERIALIZER": "rest_framework_simplejwt.serializers.TokenBlacklistSerializer", 

42 "SLIDING_TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.TokenObtainSlidingSerializer", 

43 "SLIDING_TOKEN_REFRESH_SERIALIZER": "rest_framework_simplejwt.serializers.TokenRefreshSlidingSerializer", 

44} 

45 

46IMPORT_STRINGS = ( 

47 "AUTH_TOKEN_CLASSES", 

48 "JSON_ENCODER", 

49 "TOKEN_USER_CLASS", 

50 "USER_AUTHENTICATION_RULE", 

51) 

52 

53REMOVED_SETTINGS = ( 

54 "AUTH_HEADER_TYPE", 

55 "AUTH_TOKEN_CLASS", 

56 "SECRET_KEY", 

57 "TOKEN_BACKEND_CLASS", 

58) 

59 

60 

61class APISettings(_APISettings): # pragma: no cover 

62 def __check_user_settings(self, user_settings): 

63 SETTINGS_DOC = "https://django-rest-framework-simplejwt.readthedocs.io/en/latest/settings.html" 

64 

65 for setting in REMOVED_SETTINGS: 

66 if setting in user_settings: 

67 raise RuntimeError( 

68 format_lazy( 

69 _( 

70 "The '{}' setting has been removed. Please refer to '{}' for available settings." 

71 ), 

72 setting, 

73 SETTINGS_DOC, 

74 ) 

75 ) 

76 

77 return user_settings 

78 

79 

80api_settings = APISettings(USER_SETTINGS, DEFAULTS, IMPORT_STRINGS) 

81 

82 

83def reload_api_settings(*args, **kwargs): # pragma: no cover 

84 global api_settings 

85 

86 setting, value = kwargs["setting"], kwargs["value"] 

87 

88 if setting == "SIMPLE_JWT": 

89 api_settings = APISettings(value, DEFAULTS, IMPORT_STRINGS) 

90 

91 

92setting_changed.connect(reload_api_settings)