from drf_spectacular.extensions import OpenApiAuthenticationExtension class TadrisinoTokenAuthenticationScheme(OpenApiAuthenticationExtension): """ این کلاس به drf-spectacular می‌گه که TadrisinoTokenAuthentication یک Bearer token هست، تا دکمه‌ی "Authorize" توی Swagger UI درست نمایش داده بشه. """ target_class = 'accounts.authentication.TadrisinoTokenAuthentication' name = 'BearerAuth' def get_security_definition(self, auto_schema): return { 'type': 'http', 'scheme': 'bearer', 'bearerFormat': 'access_token', 'description': ( 'توکن دسترسی که از /api/auth/session یا /api/auth/login گرفته می‌شه. ' 'در فیلد Value فقط خودِ توکن رو بذارید (بدون کلمه‌ی Bearer)؛ Swagger ' 'خودش اضافه می‌کنه.' ), }