MCPcopy
hub / github.com/tornadoweb/tornado / _on_authentication_verified

Method _on_authentication_verified

tornado/auth.py:217–277  ·  view source on GitHub ↗
(
        self, response: httpclient.HTTPResponse
    )

Source from the content-addressed store, hash-verified

215 return args
216
217 def _on_authentication_verified(
218 self, response: httpclient.HTTPResponse
219 ) -> Dict[str, Any]:
220 handler = cast(RequestHandler, self)
221 if re.search(rb"(?m)^is_valid:true$", response.body) is None:
222 raise AuthError("Invalid OpenID response: %r" % response.body)
223
224 # Make sure we got back at least an email from attribute exchange
225 ax_ns = None
226 for key in handler.request.arguments:
227 if (
228 key.startswith("openid.ns.")
229 and handler.get_argument(key) == "http://openid.net/srv/ax/1.0"
230 ):
231 ax_ns = key[10:]
232 break
233
234 def get_ax_arg(uri: str) -> str:
235 if not ax_ns:
236 return ""
237 prefix = "openid." + ax_ns + ".type."
238 ax_name = None
239 for name in handler.request.arguments.keys():
240 if handler.get_argument(name) == uri and name.startswith(prefix):
241 part = name[len(prefix) :]
242 ax_name = "openid." + ax_ns + ".value." + part
243 break
244 if not ax_name:
245 return ""
246 return handler.get_argument(ax_name, "")
247
248 email = get_ax_arg("http://axschema.org/contact/email")
249 name = get_ax_arg("http://axschema.org/namePerson")
250 first_name = get_ax_arg("http://axschema.org/namePerson/first")
251 last_name = get_ax_arg("http://axschema.org/namePerson/last")
252 username = get_ax_arg("http://axschema.org/namePerson/friendly")
253 locale = get_ax_arg("http://axschema.org/pref/language").lower()
254 user = dict()
255 name_parts = []
256 if first_name:
257 user["first_name"] = first_name
258 name_parts.append(first_name)
259 if last_name:
260 user["last_name"] = last_name
261 name_parts.append(last_name)
262 if name:
263 user["name"] = name
264 elif name_parts:
265 user["name"] = " ".join(name_parts)
266 elif email:
267 user["name"] = email.split("@")[0]
268 if email:
269 user["email"] = email
270 if locale:
271 user["locale"] = locale
272 if username:
273 user["username"] = username
274 claimed_id = handler.get_argument("openid.claimed_id", None)

Callers 1

Calls 5

AuthErrorClass · 0.85
get_argumentMethod · 0.80
appendMethod · 0.80
joinMethod · 0.80
splitMethod · 0.80

Tested by

no test coverage detected