@@ -26,7 +26,7 @@ def authorize(provider: str):
26
26
return flask .abort (404 )
27
27
28
28
flask .session ["oauth2_state" ] = secrets .token_urlsafe (16 )
29
- next = flask .request .args .get ("next" )
29
+ next = flask .request .args .get ("next" , None )
30
30
31
31
query_string = urlencode (
32
32
{
@@ -55,7 +55,9 @@ def callback(provider: str):
55
55
if not provider_data :
56
56
return flask .abort (404 )
57
57
58
- if flask .request .args .get ("state" ) != flask .session ["oauth2_state" ]:
58
+ state = flask .request .args .get ("state" , None )
59
+
60
+ if state is None or state != flask .session ["oauth2_state" ]:
59
61
return flask .abort (401 )
60
62
61
63
if "code" not in flask .request .args :
@@ -87,7 +89,10 @@ def callback(provider: str):
87
89
if not oauth2_token :
88
90
return flask .abort (401 )
89
91
90
- token_response = response .json ()
92
+ try :
93
+ token_response = response .json ()
94
+ except Exception :
95
+ flask .abort (400 , "Invalid token response" )
91
96
92
97
response = requests .get (
93
98
provider_data ["userinfo" ]["url" ],
@@ -98,9 +103,12 @@ def callback(provider: str):
98
103
)
99
104
100
105
if response .status_code != 200 :
101
- return flask .abort (401 )
106
+ return flask .abort (401 , "Cannot get user info" )
102
107
103
- data_response = response .json ()
108
+ try :
109
+ data_response = response .json ()
110
+ except Exception :
111
+ flask .abort (400 , "Invalid data response" )
104
112
105
113
uniform_account = get_account (provider , token_response , data_response )
106
114
account_from_database = (
@@ -139,8 +147,6 @@ def callback(provider: str):
139
147
140
148
db .session .commit ()
141
149
142
- print (uniform_account .providerAccountId )
143
-
144
150
# Select User based on Account
145
151
user_for_login = (
146
152
db .session .query (User )
0 commit comments