from django.conf import settings from django.conf.urls.static import static from django.contrib import admin from django.urls import include, path from rest_framework_simplejwt.views import TokenRefreshView from allauth.socialaccount.providers.apple.views import AppleOAuth2Adapter from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter from allauth.socialaccount.providers.oauth2.client import OAuth2Client from dj_rest_auth.registration.views import SocialLoginView from .views import public_feed class GoogleLoginView(SocialLoginView): adapter_class = GoogleOAuth2Adapter client_class = OAuth2Client class AppleLoginView(SocialLoginView): adapter_class = AppleOAuth2Adapter client_class = OAuth2Client urlpatterns = [ path('admin/', admin.site.urls), # Auth path('api/auth/', include('dj_rest_auth.urls')), path('api/auth/registration/', include('dj_rest_auth.registration.urls')), path('api/auth/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), # Social / external IDP # Mobile flow: POST {"access_token": ""} → returns JWT pair path('api/auth/social/google/', GoogleLoginView.as_view(), name='google_login'), path('api/auth/social/apple/', AppleLoginView.as_view(), name='apple_login'), # Users app path('api/users/', include('apps.users.urls')), # Gears app path('api/', include('apps.gears.urls')), # Tools app path('api/', include('apps.tools.urls')), # Photos app path('api/photos/', include('apps.photos.urls')), # Sessions app path('api/', include('apps.sessions.urls')), # Calibers app path('api/', include('apps.calibers.urls')), # Social app (messages, blog, bugs, friends) path('api/', include('apps.social.urls')), # Public feed path('api/feed/', public_feed, name='public-feed'), ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)