Files
igny8/backend/igny8_core/api/schema_extensions.py

40 lines
1.3 KiB
Python

"""
OpenAPI Schema Extensions for drf-spectacular
Custom extensions for JWT authentication and unified response format
"""
from drf_spectacular.extensions import OpenApiAuthenticationExtension
from drf_spectacular.plumbing import build_bearer_security_scheme_object
from drf_spectacular.utils import extend_schema, OpenApiResponse
from rest_framework import status
class JWTAuthenticationExtension(OpenApiAuthenticationExtension):
"""
OpenAPI extension for JWT Bearer Token authentication
"""
target_class = 'igny8_core.api.authentication.JWTAuthentication'
name = 'JWTAuthentication'
def get_security_definition(self, auto_schema):
return build_bearer_security_scheme_object(
header_name='Authorization',
token_prefix='Bearer',
bearer_format='JWT'
)
class CSRFExemptSessionAuthenticationExtension(OpenApiAuthenticationExtension):
"""
OpenAPI extension for CSRF-exempt session authentication
"""
target_class = 'igny8_core.api.authentication.CSRFExemptSessionAuthentication'
name = 'SessionAuthentication'
def get_security_definition(self, auto_schema):
return {
'type': 'apiKey',
'in': 'cookie',
'name': 'sessionid'
}