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
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1from datetime import timedelta
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
8from .utils import format_lazy
10USER_SETTINGS = getattr(settings, "SIMPLE_JWT", None)
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}
46IMPORT_STRINGS = (
47 "AUTH_TOKEN_CLASSES",
48 "JSON_ENCODER",
49 "TOKEN_USER_CLASS",
50 "USER_AUTHENTICATION_RULE",
51)
53REMOVED_SETTINGS = (
54 "AUTH_HEADER_TYPE",
55 "AUTH_TOKEN_CLASS",
56 "SECRET_KEY",
57 "TOKEN_BACKEND_CLASS",
58)
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"
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 )
77 return user_settings
80api_settings = APISettings(USER_SETTINGS, DEFAULTS, IMPORT_STRINGS)
83def reload_api_settings(*args, **kwargs): # pragma: no cover
84 global api_settings
86 setting, value = kwargs["setting"], kwargs["value"]
88 if setting == "SIMPLE_JWT":
89 api_settings = APISettings(value, DEFAULTS, IMPORT_STRINGS)
92setting_changed.connect(reload_api_settings)