Session based django social

<
AUTHENTICATION_BACKENDS = (
    'social_core.backends.google.GoogleOAuth2',
    'django.contrib.auth.backends.ModelBackend'
) 

DJOSER = {
    'PASSWORD_RESET_CONFIRM_URL': 'password/reset/confirm/{uid}/{token}',
    'PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND': True,
    'SEND_CONFIRMATION_EMAIL': True,
    'ACTIVATION_URL': 'activate/{uid}/{token}',
    'SEND_ACTIVATION_EMAIL': True,
    'CREATE_SESSION_ON_LOGIN': True,
    'SOCIAL_AUTH_TOKEN_STRATEGY': 'members.social_token.TokenStrategy',
    'SOCIAL_AUTH_ALLOWED_REDIRECT_URIS': [
        'http://localhost:3000/google'
    ],
    'SERIALIZERS': {
        'current_user': 'members.serializers.UserCreateSerializer',
    }
<
from django.contrib.auth import login
from django.http import HttpRequest
from django.conf import settings

from importlib import import_module
class TokenStrategy:
    @classmethod
    def obtain(cls, user):
        from rest_framework_simplejwt.tokens import RefreshToken
        from six import text_type

        refresh = RefreshToken.for_user(user)
        request = HttpRequest()
        engine = import_module(settings.SESSION_ENGINE)
        session_key = None
        request.session = engine.SessionStore(session_key)
        
        login(
            user=user,
            request=request,
        )
        user.is_active = True
        return {
            "access": text_type(refresh.access_token),
            "refresh": text_type(refresh),
            "user": user,
        }
<
Вернуться на верх