Exemplo n.º 1
0
    def post(self, request, format=None):
        """
        Returns the URL to the login page of provider's authentication server.
        """
        # You should have CSRF protection enabled, see
        # https://security.stackexchange.com/a/104390 (point 3).
        # Therefore this is a POST endpoint.
        # This code is inspired by `OAuth2LoginView.dispatch`.
        adapter = self.adapter_class(request)
        provider = adapter.get_provider()
        app = provider.get_app(request)
        view = OAuth2LoginView()
        view.request = request
        view.adapter = adapter
        client = view.get_client(request, app)
        # You can modify `action` if you have more steps in your auth flow
        action = AuthAction.AUTHENTICATE
        auth_params = provider.get_auth_params(request, action)
        # You can omit this if you want to validate the state in the frontend
        #client.state = SocialLogin.stash_state(request)
        url = client.get_redirect_url(adapter.authorize_url, auth_params)
        custom_call_back_url = settings.SOCIAL_AUTH_CUSTOM_CALLBACK

        if custom_call_back_url:
            url = custom_call_back_url
        else:
            url = re.sub('api.', 'app.', url)
            url = re.sub('staging-api.', 'staging-app.', url)

        return Response({'url': url})
Exemplo n.º 2
0
 def post(self, request):
     """Return the URL of provider's authentication server."""
     adapter = self.adapter_class(request)
     provider = adapter.get_provider()
     app = provider.get_app(request)
     view = OAuth2LoginView()
     view.request = request
     view.adapter = adapter
     client = view.get_client(request, app)
     action = AuthAction.AUTHENTICATE
     auth_params = provider.get_auth_params(request, action)
     client.state = SocialLogin.stash_state(request)
     url = client.get_redirect_url(adapter.authorize_url, auth_params)
     return Response({'url': url})
Exemplo n.º 3
0
 def post(self, request, format=None):
     # You should have CSRF protection enabled, see
     # https://security.stackexchange.com/a/104390 (point 3).
     # Therefore this is a POST endpoint.
     # This code is inspired by `OAuth2LoginView.dispatch`.
     adapter = self.adapter_class(request)
     provider = adapter.get_provider()
     app = provider.get_app(request)
     view = OAuth2LoginView()
     view.request = request
     view.adapter = adapter
     client = view.get_client(request, app)
     action = AuthAction.AUTHENTICATE
     auth_params = provider.get_auth_params(request, action)
     client.state = SocialLogin.stash_state(request)
     url = client.get_redirect_url(adapter.authorize_url, auth_params)
     return Response({'url': url})