def profile():
"""Fetch a protected resource using an OAuth 2 token."""
user = current_user
app.logger.info(f"For {user} trying to display profile by getting ORCID token")
try:
orcid_token = OrcidToken.get(user_id=user.id, org=user.organisation)
except OrcidToken.DoesNotExist:
app.logger.info(f"For {user} we dont have ocrditoken so redirecting back to link page")
return redirect(url_for("link"))
except Exception as ex:
# TODO: need to handle this
app.logger.exception("Failed to retrieve ORCID token form DB.")
flash("Unhandled Exception occured: %s" % ex, "danger")
return redirect(url_for("login"))
else:
client = OAuth2Session(
user.organisation.orcid_client_id, token={
"access_token": orcid_token.access_token
})
base_url = ORCID_API_BASE + user.orcid
# TODO: utilize asyncio/aiohttp to run it concurrently
resp_person = client.get(base_url + "/person", headers=HEADERS)
app.logger.info("For %r logging response code %r, While fetching profile info", user,
resp_person.status_code)
if resp_person.status_code == 401:
orcid_token.delete_instance()
app.logger.info("%r has removed his organisation from trusted list", user)
return redirect(url_for("link"))
else:
users = User.select().where(User.orcid == user.orcid)
users_orcid = OrcidToken.select().where(OrcidToken.user.in_(users))
app.logger.info("For %r everything is fine, So displaying profile page", user)
return render_template(
"profile.html", user=user, users_orcid=users_orcid, profile_url=ORCID_BASE_URL)
authcontroller.py 文件源码
python
阅读 18
收藏 0
点赞 0
评论 0
评论列表
文章目录