mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-14 22:33:17 +00:00
@@ -10,6 +10,7 @@ from django.utils.translation import ugettext as _
|
|||||||
|
|
||||||
from constance import config
|
from constance import config
|
||||||
|
|
||||||
|
from seahub.api2.utils import get_token_v1, get_token_v2
|
||||||
from seahub import auth
|
from seahub import auth
|
||||||
from seahub.profile.models import Profile
|
from seahub.profile.models import Profile
|
||||||
from seahub.utils import is_valid_email
|
from seahub.utils import is_valid_email
|
||||||
@@ -114,7 +115,15 @@ def oauth_callback(request):
|
|||||||
try:
|
try:
|
||||||
session.fetch_token(TOKEN_URL, client_secret=CLIENT_SECRET,
|
session.fetch_token(TOKEN_URL, client_secret=CLIENT_SECRET,
|
||||||
authorization_response=request.get_full_path())
|
authorization_response=request.get_full_path())
|
||||||
user_info_resp = session.get(USER_INFO_URL)
|
|
||||||
|
if session._client.__dict__['token'].has_key('user_id'):
|
||||||
|
# used for sjtu.edu.cn
|
||||||
|
# https://xjq12311.gitbooks.io/sjtu-engtc/content/
|
||||||
|
user_id = session._client.__dict__['token']['user_id']
|
||||||
|
user_info_resp = session.get(USER_INFO_URL + '?user_id=%s' % user_id)
|
||||||
|
else:
|
||||||
|
user_info_resp = session.get(USER_INFO_URL)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
return render_to_response('error.html', {
|
return render_to_response('error.html', {
|
||||||
@@ -199,5 +208,28 @@ def oauth_callback(request):
|
|||||||
profile.contact_email = contact_email.strip()
|
profile.contact_email = contact_email.strip()
|
||||||
profile.save()
|
profile.save()
|
||||||
|
|
||||||
|
# generate auth token for Seafile client
|
||||||
|
keys = (
|
||||||
|
'platform',
|
||||||
|
'device_id',
|
||||||
|
'device_name',
|
||||||
|
'client_version',
|
||||||
|
'platform_version',
|
||||||
|
)
|
||||||
|
|
||||||
|
if all([key in request.GET for key in keys]):
|
||||||
|
platform = request.GET['platform']
|
||||||
|
device_id = request.GET['device_id']
|
||||||
|
device_name = request.GET['device_name']
|
||||||
|
client_version = request.GET['client_version']
|
||||||
|
platform_version = request.GET['platform_version']
|
||||||
|
token = get_token_v2(
|
||||||
|
request, request.user.username, platform, device_id,
|
||||||
|
device_name, client_version, platform_version)
|
||||||
|
else:
|
||||||
|
token = get_token_v1(request.user.username)
|
||||||
|
|
||||||
# redirect user to home page
|
# redirect user to home page
|
||||||
return HttpResponseRedirect(reverse('libraries'))
|
response = HttpResponseRedirect(reverse('libraries'))
|
||||||
|
response.set_cookie('seahub_auth', email + '@' + token.key)
|
||||||
|
return response
|
||||||
|
@@ -24,5 +24,8 @@ def sso(request):
|
|||||||
if getattr(settings, 'ENABLE_ADFS_LOGIN', False):
|
if getattr(settings, 'ENABLE_ADFS_LOGIN', False):
|
||||||
return HttpResponseRedirect(reverse('saml2_login'))
|
return HttpResponseRedirect(reverse('saml2_login'))
|
||||||
|
|
||||||
|
if getattr(settings, 'ENABLE_OAUTH', False):
|
||||||
|
return HttpResponseRedirect(reverse('oauth_login'))
|
||||||
|
|
||||||
def shib_login(request):
|
def shib_login(request):
|
||||||
return sso(request)
|
return sso(request)
|
||||||
|
Reference in New Issue
Block a user