forked from pythonprobr/pythonpro-website
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathviews.py
More file actions
22 lines (18 loc) · 686 Bytes
/
views.py
File metadata and controls
22 lines (18 loc) · 686 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect
from django.views.defaults import bad_request
from pythonpro.discourse.facade import InvalidSOOPayload, generate_discourse_login_url
@login_required
def sso(request):
"""
Proceed login into discourse
Code based on https://meta.discourse.org/t/sso-example-for-django/14258
"""
payload = request.GET.get('sso')
signature = request.GET.get('sig')
try:
url = generate_discourse_login_url(request.user, payload, signature)
except InvalidSOOPayload as e:
return bad_request(request, e)
else:
return HttpResponseRedirect(url)