@@ -40,54 +40,80 @@ def get_pkce_params(self):
40
40
return pkce_code_params
41
41
return {}
42
42
43
- def get_auth_params (self , request , action ):
43
+ def get_auth_params (self ):
44
44
"""
45
45
Returns a dictionary of additional parameters passed to the OAuth2
46
46
redirect URL. Additional -- so no need to pass the standard `client_id`,
47
47
`redirect_uri`, `response_type`.
48
48
"""
49
49
settings = self .get_settings ()
50
50
ret = dict (settings .get ("AUTH_PARAMS" , {}))
51
+ return ret
52
+
53
+ def get_auth_params_from_request (self , request , action ):
54
+ """
55
+ Returns a dictionary of additional parameters passed to the OAuth2
56
+ redirect URL. Additional -- so no need to pass the standard `client_id`,
57
+ `redirect_uri`, `response_type`.
58
+ """
59
+ ret = self .get_auth_params ()
51
60
dynamic_auth_params = request .GET .get ("auth_params" , None )
52
61
if dynamic_auth_params :
53
62
ret .update (dict (parse_qsl (dynamic_auth_params )))
54
63
return ret
55
64
56
- def get_scope (self , request ):
65
+ def get_default_scope (self ):
66
+ """
67
+ Returns the default scope to use.
68
+ """
69
+ return []
70
+
71
+ def get_scope (self ):
72
+ """
73
+ Returns the scope to use, taking settings `SCOPE` into consideration.
74
+ """
57
75
settings = self .get_settings ()
58
76
scope = list (settings .get ("SCOPE" , self .get_default_scope ()))
77
+ return scope
78
+
79
+ def get_scope_from_request (self , request ):
80
+ """
81
+ Returns the scope to use for the given request.
82
+ """
83
+ scope = self .get_scope ()
59
84
dynamic_scope = request .GET .get ("scope" , None )
60
85
if dynamic_scope :
61
86
scope .extend (dynamic_scope .split ("," ))
62
87
return scope
63
88
64
- def get_default_scope (self ):
65
- return []
66
-
67
89
def get_oauth2_adapter (self , request ):
68
90
return self .oauth2_adapter_class (request )
69
91
70
92
def get_redirect_from_request_kwargs (self , request ):
71
93
kwargs = super ().get_redirect_from_request_kwargs (request )
72
- kwargs ["scope" ] = self .get_scope (request )
94
+ kwargs ["scope" ] = self .get_scope_from_request (request )
73
95
action = request .GET .get ("action" , AuthAction .AUTHENTICATE )
74
- kwargs ["auth_params" ] = self .get_auth_params (request , action )
96
+ kwargs ["auth_params" ] = self .get_auth_params_from_request (request , action )
75
97
return kwargs
76
98
77
99
def redirect (self , request , process , next_url = None , data = None , ** kwargs ):
78
100
app = self .app
79
101
oauth2_adapter = self .get_oauth2_adapter (request )
80
102
client = oauth2_adapter .get_client (request , app )
81
103
auth_url = oauth2_adapter .authorize_url
82
- auth_params = kwargs ["auth_params" ]
104
+ auth_params = kwargs .get ("auth_params" )
105
+ if auth_params is None :
106
+ auth_params = self .get_auth_params ()
83
107
pkce_params = self .get_pkce_params ()
84
108
code_verifier = pkce_params .pop ("code_verifier" , None )
85
109
auth_params .update (pkce_params )
86
110
if code_verifier :
87
111
request .session ["pkce_code_verifier" ] = code_verifier
88
112
89
113
client .state = self .stash_redirect_state (request , process , next_url , data )
90
- scope = kwargs ["scope" ]
114
+ scope = kwargs .get ("scope" )
115
+ if scope is None :
116
+ scope = self .get_scope ()
91
117
try :
92
118
return HttpResponseRedirect (
93
119
client .get_redirect_url (auth_url , scope , auth_params )
0 commit comments