mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-19 10:26:17 +00:00
Merge pull request #2186 from haiwen/oauth_access_token
[oauth] Some oauth server only support access token in request uri
This commit is contained in:
@@ -35,6 +35,7 @@ if ENABLE_OAUTH:
|
|||||||
TOKEN_URL = getattr(settings, 'OAUTH_TOKEN_URL', '')
|
TOKEN_URL = getattr(settings, 'OAUTH_TOKEN_URL', '')
|
||||||
USER_INFO_URL = getattr(settings, 'OAUTH_USER_INFO_URL', '')
|
USER_INFO_URL = getattr(settings, 'OAUTH_USER_INFO_URL', '')
|
||||||
SCOPE = getattr(settings, 'OAUTH_SCOPE', '')
|
SCOPE = getattr(settings, 'OAUTH_SCOPE', '')
|
||||||
|
ACCESS_TOKEN_IN_URI = getattr(settings, 'OAUTH_ACCESS_TOKEN_IN_URI', False)
|
||||||
|
|
||||||
# Used for init an user for Seahub.
|
# Used for init an user for Seahub.
|
||||||
PROVIDER_DOMAIN = getattr(settings, 'OAUTH_PROVIDER_DOMAIN', '')
|
PROVIDER_DOMAIN = getattr(settings, 'OAUTH_PROVIDER_DOMAIN', '')
|
||||||
@@ -113,7 +114,7 @@ def oauth_callback(request):
|
|||||||
redirect_uri=REDIRECT_URL)
|
redirect_uri=REDIRECT_URL)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
session.fetch_token(TOKEN_URL, client_secret=CLIENT_SECRET,
|
token = session.fetch_token(TOKEN_URL, client_secret=CLIENT_SECRET,
|
||||||
authorization_response=request.get_full_path())
|
authorization_response=request.get_full_path())
|
||||||
|
|
||||||
if session._client.__dict__['token'].has_key('user_id'):
|
if session._client.__dict__['token'].has_key('user_id'):
|
||||||
@@ -122,7 +123,11 @@ def oauth_callback(request):
|
|||||||
user_id = session._client.__dict__['token']['user_id']
|
user_id = session._client.__dict__['token']['user_id']
|
||||||
user_info_resp = session.get(USER_INFO_URL + '?user_id=%s' % user_id)
|
user_info_resp = session.get(USER_INFO_URL + '?user_id=%s' % user_id)
|
||||||
else:
|
else:
|
||||||
user_info_resp = session.get(USER_INFO_URL)
|
user_info_url = USER_INFO_URL
|
||||||
|
if ACCESS_TOKEN_IN_URI:
|
||||||
|
code = request.GET.get('code')
|
||||||
|
user_info_url = USER_INFO_URL + '?access_token=%s&code=%s' % (token['access_token'], code)
|
||||||
|
user_info_resp = session.get(user_info_url)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
@@ -131,7 +136,7 @@ def oauth_callback(request):
|
|||||||
}, context_instance=RequestContext(request))
|
}, context_instance=RequestContext(request))
|
||||||
|
|
||||||
def format_user_info(user_info_resp):
|
def format_user_info(user_info_resp):
|
||||||
|
logger.info('user info resp: %s' % user_info_resp.text)
|
||||||
error = False
|
error = False
|
||||||
user_info = {}
|
user_info = {}
|
||||||
user_info_json = user_info_resp.json()
|
user_info_json = user_info_resp.json()
|
||||||
|
Reference in New Issue
Block a user