Skip to content

Commit bab5f77

Browse files
committed
1 parent c4c7e4f commit bab5f77

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

oauth/views.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.shortcuts import render
22

33
# Create your views here.
4-
4+
from urllib.parse import urlparse
55
from django.conf import settings
66
from django.http import HttpResponse, HttpResponseRedirect
77
from django.contrib.auth import get_user_model
@@ -23,22 +23,33 @@
2323
logger = logging.getLogger(__name__)
2424

2525

26+
def get_redirecturl(request):
27+
nexturl = request.GET.get('next_url', None)
28+
if not nexturl or nexturl == '/login/' or nexturl == '/login':
29+
nexturl = '/'
30+
return nexturl
31+
p = urlparse(nexturl)
32+
if p.netloc:
33+
site = Site.objects.get_current().domain
34+
if not p.netloc.replace('www.', '') == site.replace('www.', ''):
35+
logger.info('非法url:' + nexturl)
36+
return "/"
37+
return nexturl
38+
39+
2640
def oauthlogin(request):
2741
type = request.GET.get('type', None)
2842
if not type:
2943
return HttpResponseRedirect('/')
3044
manager = get_manager_by_type(type)
3145
if not manager:
3246
return HttpResponseRedirect('/')
33-
nexturl = request.GET.get('next_url', None)
34-
if not nexturl or nexturl == '/login/':
35-
nexturl = '/'
47+
nexturl = get_redirecturl(request)
3648
authorizeurl = manager.get_authorization_url(nexturl)
3749
return HttpResponseRedirect(authorizeurl)
3850

3951

4052
def authorize(request):
41-
manager = None
4253
type = request.GET.get('type', None)
4354
if not type:
4455
return HttpResponseRedirect('/')
@@ -47,9 +58,7 @@ def authorize(request):
4758
return HttpResponseRedirect('/')
4859
code = request.GET.get('code', None)
4960
rsp = manager.get_access_token_by_code(code)
50-
nexturl = request.GET.get('next_url', None)
51-
if not nexturl:
52-
nexturl = '/'
61+
nexturl = get_redirecturl(request)
5362
if not rsp:
5463
return HttpResponseRedirect(manager.get_authorization_url(nexturl))
5564
user = manager.get_oauth_userinfo()
@@ -88,7 +97,7 @@ def authorize(request):
8897
oauth_user_login_signal.send(sender=authorize.__class__, id=user.id)
8998
login(request, author)
9099
return HttpResponseRedirect(nexturl)
91-
if not email:
100+
else:
92101
user.save()
93102
url = reverse('oauth:require_email', kwargs={
94103
'oauthid': user.id
@@ -105,7 +114,6 @@ def emailconfirm(request, id, sign):
105114
if not get_md5(settings.SECRET_KEY + str(id) + settings.SECRET_KEY).upper() == sign.upper():
106115
return HttpResponseForbidden()
107116
oauthuser = get_object_or_404(OAuthUser, pk=id)
108-
author = None
109117
if oauthuser.author:
110118
author = get_user_model().objects.get(pk=oauthuser.author_id)
111119
else:
@@ -202,9 +210,6 @@ def form_valid(self, form):
202210

203211
def bindsuccess(request, oauthid):
204212
type = request.GET.get('type', None)
205-
206-
title = ''
207-
content = ''
208213
oauthuser = get_object_or_404(OAuthUser, pk=oauthid)
209214
if type == 'email':
210215
title = '绑定成功'

0 commit comments

Comments
 (0)