def sso_redirect(request, scopes=list([]), return_to=None):
"""
Generates a :model:`esi.CallbackRedirect` for the specified request.
Redirects to EVE for login.
Accepts a view or URL name as a redirect after SSO.
"""
if isinstance(scopes, string_types):
scopes = list([scopes])
# ensure only one callback redirect model per session
CallbackRedirect.objects.filter(session_key=request.session.session_key).delete()
# ensure session installed in database
if not request.session.exists(request.session.session_key):
request.session.create()
if return_to:
url = reverse(return_to)
else:
url = request.get_full_path()
oauth = OAuth2Session(app_settings.ESI_SSO_CLIENT_ID, redirect_uri=app_settings.ESI_SSO_CALLBACK_URL, scope=scopes)
redirect_url, state = oauth.authorization_url(app_settings.ESI_OAUTH_LOGIN_URL)
CallbackRedirect.objects.create(session_key=request.session.session_key, state=state, url=url)
return redirect(redirect_url)
评论列表
文章目录