Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-openid-auth
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
OpenEdx
django-openid-auth
Commits
8e6a7f82
Commit
8e6a7f82
authored
Aug 29, 2012
by
Anthony Lenton
Browse files
Options
Browse Files
Download
Plain Diff
[r=jamesh] Small changes to make it work with django-1.3
parents
59ec172e
1018e7ac
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
96 additions
and
5 deletions
+96
-5
django_openid_auth/admin.py
+3
-4
django_openid_auth/auth.py
+3
-0
django_openid_auth/tests/__init__.py
+2
-1
django_openid_auth/tests/test_admin.py
+88
-0
No files found.
django_openid_auth/admin.py
View file @
8e6a7f82
...
@@ -77,15 +77,14 @@ if getattr(settings, 'OPENID_USE_AS_ADMIN_LOGIN', False):
...
@@ -77,15 +77,14 @@ if getattr(settings, 'OPENID_USE_AS_ADMIN_LOGIN', False):
def
_openid_login
(
self
,
request
,
error_message
=
''
,
extra_context
=
None
):
def
_openid_login
(
self
,
request
,
error_message
=
''
,
extra_context
=
None
):
if
request
.
user
.
is_authenticated
():
if
request
.
user
.
is_authenticated
():
if
not
request
.
user
.
is_staff
:
if
not
request
.
user
.
is_staff
:
return
views
.
render_failure
(
return
views
.
default_
render_failure
(
request
,
"User
%
s does not have admin access."
request
,
"User
%
s does not have admin access."
%
request
.
user
.
username
)
%
request
.
user
.
username
)
return
views
.
render_failure
(
assert
error_message
,
"Unknown Error:
%
s"
%
error_message
request
,
"Unknown Error:
%
s"
%
error_message
)
else
:
else
:
# Redirect to openid login path,
# Redirect to openid login path,
return
HttpResponseRedirect
(
return
HttpResponseRedirect
(
settings
.
LOGIN_URL
+
"?next="
+
request
.
get_full_path
())
settings
.
LOGIN_URL
+
"?next="
+
request
.
get_full_path
())
# Overide the standard admin login form.
# Overide the standard admin login form.
admin
.
sites
.
AdminSite
.
display_login_form
=
_openid_login
admin
.
sites
.
AdminSite
.
login
=
_openid_login
django_openid_auth/auth.py
View file @
8e6a7f82
...
@@ -49,6 +49,9 @@ class OpenIDBackend:
...
@@ -49,6 +49,9 @@ class OpenIDBackend:
"""A django.contrib.auth backend that authenticates the user based on
"""A django.contrib.auth backend that authenticates the user based on
an OpenID response."""
an OpenID response."""
supports_object_permissions
=
False
supports_anonymous_user
=
True
def
get_user
(
self
,
user_id
):
def
get_user
(
self
,
user_id
):
try
:
try
:
return
User
.
objects
.
get
(
pk
=
user_id
)
return
User
.
objects
.
get
(
pk
=
user_id
)
...
...
django_openid_auth/tests/__init__.py
View file @
8e6a7f82
...
@@ -30,11 +30,12 @@ import unittest
...
@@ -30,11 +30,12 @@ import unittest
from
test_views
import
*
from
test_views
import
*
from
test_store
import
*
from
test_store
import
*
from
test_auth
import
*
from
test_auth
import
*
from
test_admin
import
*
def
suite
():
def
suite
():
suite
=
unittest
.
TestSuite
()
suite
=
unittest
.
TestSuite
()
for
name
in
[
'test_auth'
,
'test_store'
,
'test_views'
]:
for
name
in
[
'test_auth'
,
'test_store'
,
'test_views'
,
'test_admin'
]:
mod
=
__import__
(
'
%
s.
%
s'
%
(
__name__
,
name
),
{},
{},
[
'suite'
])
mod
=
__import__
(
'
%
s.
%
s'
%
(
__name__
,
name
),
{},
{},
[
'suite'
])
suite
.
addTest
(
mod
.
suite
())
suite
.
addTest
(
mod
.
suite
())
return
suite
return
suite
django_openid_auth/tests/test_admin.py
0 → 100644
View file @
8e6a7f82
# django-openid-auth - OpenID integration for django.contrib.auth
#
# Copyright (C) 2009-2012 Canonical Ltd.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
"""
Tests for the django_openid_auth Admin login form replacement.
"""
import
os
import
unittest
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
,
AnonymousUser
settings
.
OPENID_USE_AS_ADMIN_LOGIN
=
True
from
django_openid_auth
import
admin
from
django.test
import
TestCase
def
create_user
(
is_staff
=
False
,
authenticated
=
True
):
"""
Create and return a user, either the AnonymousUser or a normal Django user,
setting the is_staff attribute if appropriate.
"""
if
not
authenticated
:
return
AnonymousUser
()
else
:
user
=
User
(
username
=
u'testing'
,
email
=
'testing@example.com'
,
is_staff
=
is_staff
)
user
.
set_password
(
u'test'
)
user
.
save
()
class
SiteAdminTests
(
TestCase
):
"""
TestCase for accessing /admin/ when the django_openid_auth form replacement
is in use.
"""
def
test_admin_site_with_openid_login_authenticated_non_staff
(
self
):
"""
If the request has an authenticated user, who is not flagged as a
staff member, then they get a failure response.
"""
create_user
()
self
.
client
.
login
(
username
=
'testing'
,
password
=
'test'
)
response
=
self
.
client
.
get
(
'/admin/'
)
self
.
assertTrue
(
'User testing does not have admin access.'
in
response
.
content
,
'Missing error message in response'
)
def
test_admin_site_with_openid_login_non_authenticated_user
(
self
):
"""
Unauthenticated users accessing the admin page should be directed to
the OpenID login url.
"""
response
=
self
.
client
.
get
(
'/admin/'
)
self
.
assertEqual
(
302
,
response
.
status_code
)
self
.
assertEqual
(
'http://testserver/openid/login/?next=/admin/'
,
response
[
'Location'
])
def
suite
():
return
unittest
.
TestLoader
()
.
loadTestsFromName
(
__name__
)
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