11from django .http import HttpResponseRedirect
2- from ..base_client import OAuthError , MismatchingStateError
3- from ..requests_client .apps import OAuth1App , OAuth2App
2+ from ..requests_client import OAuth1Session , OAuth2Session
3+ from ..base_client import (
4+ BaseApp , OAuthError ,
5+ OAuth1Mixin , OAuth2Mixin , OpenIDMixin ,
6+ )
47
58
69class DjangoAppMixin (object ):
710 def save_authorize_data (self , request , ** kwargs ):
811 state = kwargs .pop ('state' , None )
912 if state :
10- self .framework .set_state_data (request , state , kwargs )
13+ self .framework .set_state_data (request . session , state , kwargs )
1114 else :
1215 raise RuntimeError ('Missing state value' )
1316
@@ -24,7 +27,9 @@ def authorize_redirect(self, request, redirect_uri=None, **kwargs):
2427 return HttpResponseRedirect (rv ['url' ])
2528
2629
27- class DjangoOAuth1App (DjangoAppMixin , OAuth1App ):
30+ class DjangoOAuth1App (DjangoAppMixin , OAuth1Mixin , BaseApp ):
31+ client_cls = OAuth1Session
32+
2833 def authorize_access_token (self , request , ** kwargs ):
2934 """Fetch access token in one step.
3035
@@ -36,7 +41,7 @@ def authorize_access_token(self, request, **kwargs):
3641 if not state :
3742 raise OAuthError (description = 'Missing "oauth_token" parameter' )
3843
39- data = self .framework .get_state_data (request , state )
44+ data = self .framework .get_state_data (request . session , state )
4045 if not data :
4146 raise OAuthError (description = 'Missing "request_token" in temporary data' )
4247
@@ -46,11 +51,13 @@ def authorize_access_token(self, request, **kwargs):
4651 params ['redirect_uri' ] = redirect_uri
4752
4853 params .update (kwargs )
49- self .framework .clear_state_data (request , state )
54+ self .framework .clear_state_data (request . session , state )
5055 return self .fetch_access_token (** params )
5156
5257
53- class DjangoOAuth2App (DjangoAppMixin , OAuth2App ):
58+ class DjangoOAuth2App (DjangoAppMixin , OAuth2Mixin , OpenIDMixin , BaseApp ):
59+ client_cls = OAuth2Session
60+
5461 def authorize_access_token (self , request , ** kwargs ):
5562 """Fetch access token in one step.
5663
@@ -72,19 +79,9 @@ def authorize_access_token(self, request, **kwargs):
7279 'state' : request .POST .get ('state' ),
7380 }
7481
75- data = self .framework .get_state_data (request , params .get ('state' ))
76- if data is None :
77- raise MismatchingStateError ()
78-
79- code_verifier = data .get ('code_verifier' )
80- if code_verifier :
81- params ['code_verifier' ] = code_verifier
82-
83- redirect_uri = data .get ('redirect_uri' )
84- if redirect_uri :
85- params ['redirect_uri' ] = redirect_uri
86- params .update (kwargs )
87- token = self .fetch_access_token (** params )
82+ state_data = self .framework .get_state_data (request .session , params .get ('state' ))
83+ params = self ._format_state_params (state_data , params )
84+ token = self .fetch_access_token (** params , ** kwargs )
8885
8986 if 'id_token' in token and 'nonce' in params :
9087 userinfo = self .parse_id_token (token , nonce = params ['nonce' ])
0 commit comments