Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
apps.py88 linesDownload Raw Back to django_client
1from django.http import HttpResponseRedirect2from ..requests_client import OAuth1Session, OAuth2Session3from ..base_client import (4    BaseApp, OAuthError,5    OAuth1Mixin, OAuth2Mixin, OpenIDMixin,6)7 8 9class DjangoAppMixin:10    def save_authorize_data(self, request, **kwargs):11        state = kwargs.pop('state', None)12        if state:13            self.framework.set_state_data(request.session, state, kwargs)14        else:15            raise RuntimeError('Missing state value')16 17    def authorize_redirect(self, request, redirect_uri=None, **kwargs):18        """Create a HTTP Redirect for Authorization Endpoint.19 20        :param request: HTTP request instance from Django view.21        :param redirect_uri: Callback or redirect URI for authorization.22        :param kwargs: Extra parameters to include.23        :return: A HTTP redirect response.24        """25        rv = self.create_authorization_url(redirect_uri, **kwargs)26        self.save_authorize_data(request, redirect_uri=redirect_uri, **rv)27        return HttpResponseRedirect(rv['url'])28 29 30class DjangoOAuth1App(DjangoAppMixin, OAuth1Mixin, BaseApp):31    client_cls = OAuth1Session32 33    def authorize_access_token(self, request, **kwargs):34        """Fetch access token in one step.35 36        :param request: HTTP request instance from Django view.37        :return: A token dict.38        """39        params = request.GET.dict()40        state = params.get('oauth_token')41        if not state:42            raise OAuthError(description='Missing "oauth_token" parameter')43 44        data = self.framework.get_state_data(request.session, state)45        if not data:46            raise OAuthError(description='Missing "request_token" in temporary data')47 48        params['request_token'] = data['request_token']49        params.update(kwargs)50        self.framework.clear_state_data(request.session, state)51        return self.fetch_access_token(**params)52 53 54class DjangoOAuth2App(DjangoAppMixin, OAuth2Mixin, OpenIDMixin, BaseApp):55    client_cls = OAuth2Session56 57    def authorize_access_token(self, request, **kwargs):58        """Fetch access token in one step.59 60        :param request: HTTP request instance from Django view.61        :return: A token dict.62        """63        if request.method == 'GET':64            error = request.GET.get('error')65            if error:66                description = request.GET.get('error_description')67                raise OAuthError(error=error, description=description)68            params = {69                'code': request.GET.get('code'),70                'state': request.GET.get('state'),71            }72        else:73            params = {74                'code': request.POST.get('code'),75                'state': request.POST.get('state'),76            }77 78        claims_options = kwargs.pop('claims_options', None)79        state_data = self.framework.get_state_data(request.session, params.get('state'))80        self.framework.clear_state_data(request.session, params.get('state'))81        params = self._format_state_params(state_data, params)82        token = self.fetch_access_token(**params, **kwargs)83 84        if 'id_token' in token and 'nonce' in state_data:85            userinfo = self.parse_id_token(token, nonce=state_data['nonce'], claims_options=claims_options)86            token['userinfo'] = userinfo87        return token88 
codekingpro/portable-devtools · Team Ai