Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
0a81684a
Commit
0a81684a
authored
Aug 31, 2012
by
Carlos Andrés Rocha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[34078525] Fix error saving open_id request in session
parent
d702082d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
26 deletions
+30
-26
common/djangoapps/external_auth/views.py
+30
-26
No files found.
common/djangoapps/external_auth/views.py
View file @
0a81684a
...
...
@@ -267,26 +267,21 @@ def ssl_login(request):
# -----------------------------------------------------------------------------
def
get_dict_for_openid
(
data
):
"""
Return a dictionary suitable for the OpenID library
"""
return
dict
((
k
,
v
)
for
k
,
v
in
data
.
iteritems
())
def
get_xrds_url
(
resource
,
request
):
"""
Return the XRDS url for a resource
"""
host
=
request
.
META
[
'HTTP_HOST'
]
if
not
host
.
endswith
(
'edx.org'
):
return
None
location
=
host
+
'/openid/provider/'
+
resource
+
'/'
location
=
request
.
META
[
'HTTP_HOST'
]
+
'/openid/provider/'
+
resource
+
'/'
if
request
.
is_secure
():
url
=
'https://'
+
location
return
'https://'
+
location
else
:
url
=
'http://'
+
location
return
url
return
'http://'
+
location
def
add_openid_simple_registration
(
request
,
response
,
data
):
...
...
@@ -402,17 +397,24 @@ def provider_login(request):
OpenID login endpoint
"""
#
initialize store and server
#
make and validate endpoint
endpoint
=
get_xrds_url
(
'login'
,
request
)
if
not
endpoint
:
return
default_render_failure
(
request
,
"Invalid OpenID request"
)
# initialize store and server
store
=
FileOpenIDStore
(
'/tmp/openid_provider'
)
server
=
Server
(
store
,
endpoint
)
# handle OpenID request
query
=
get_dict_for_openid
(
request
.
REQUEST
)
query
dict
=
dict
(
request
.
REQUEST
.
items
()
)
error
=
False
if
'openid.mode'
in
request
.
GET
or
'openid.mode'
in
request
.
POST
:
# decode request
openid_request
=
server
.
decodeRequest
(
query
)
openid_request
=
server
.
decodeRequest
(
querydict
)
if
not
openid_request
:
return
default_render_failure
(
request
,
"Invalid OpenID request"
)
# don't allow invalid and non-trusted trust roots
if
not
validate_trust_root
(
openid_request
):
...
...
@@ -427,7 +429,7 @@ def provider_login(request):
elif
openid_request
.
mode
==
'checkid_setup'
:
if
openid_request
.
idSelect
():
# remember request and original path
request
.
session
[
'openid_
request
'
]
=
{
request
.
session
[
'openid_
setup
'
]
=
{
'request'
:
openid_request
,
'url'
:
request
.
get_full_path
()
}
...
...
@@ -443,12 +445,14 @@ def provider_login(request):
server
.
handleRequest
(
openid_request
),
{})
# handle login
if
request
.
method
==
'POST'
and
'openid_
request
'
in
request
.
session
:
if
request
.
method
==
'POST'
and
'openid_
setup
'
in
request
.
session
:
# get OpenID request from session
openid_request
=
request
.
session
[
'openid_request'
]
del
request
.
session
[
'openid_request'
]
openid_setup
=
request
.
session
[
'openid_setup'
]
openid_request
=
openid_setup
[
'request'
]
openid_request_url
=
openid_setup
[
'url'
]
del
request
.
session
[
'openid_setup'
]
# don't allow invalid
and non-*.cs50.net
trust roots
# don't allow invalid trust roots
if
not
validate_trust_root
(
openid_request
):
return
default_render_failure
(
request
,
"Invalid OpenID trust root"
)
...
...
@@ -460,7 +464,7 @@ def provider_login(request):
request
.
session
[
'openid_error'
]
=
True
msg
=
"OpenID login failed - Unknown user email: {0}"
.
format
(
email
)
log
.
warning
(
msg
)
return
HttpResponseRedirect
(
openid_request
[
'url'
]
)
return
HttpResponseRedirect
(
openid_request
_url
)
# attempt to authenticate user
username
=
user
.
username
...
...
@@ -471,7 +475,7 @@ def provider_login(request):
msg
=
"OpenID login failed - password for {0} is invalid"
msg
=
msg
.
format
(
email
)
log
.
warning
(
msg
)
return
HttpResponseRedirect
(
openid_request
[
'url'
]
)
return
HttpResponseRedirect
(
openid_request
_url
)
# authentication succeeded, so log user in
if
user
is
not
None
and
user
.
is_active
:
...
...
@@ -486,10 +490,10 @@ def provider_login(request):
# redirect user to return_to location
url
=
endpoint
+
urlquote
(
user
.
username
)
response
=
openid_request
[
'request'
]
.
answer
(
True
,
None
,
url
)
response
=
openid_request
.
answer
(
True
,
None
,
url
)
return
provider_respond
(
server
,
openid_request
[
'request'
]
,
openid_request
,
response
,
{
'fullname'
:
profile
.
name
,
...
...
@@ -499,7 +503,7 @@ def provider_login(request):
request
.
session
[
'openid_error'
]
=
True
msg
=
"Login failed - Account not active for user {0}"
.
format
(
username
)
log
.
warning
(
msg
)
return
HttpResponseRedirect
(
openid_request
[
'url'
]
)
return
HttpResponseRedirect
(
openid_request
_url
)
# determine consumer domain if applicable
return_to
=
''
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment