Skip to content

Commit d4a45fb

Browse files
committed
Merge pull request #49 from cordmata/develop
Allow user creation on first login to be optional.
2 parents bec075b + 65605d7 commit d4a45fb

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,16 @@ Then, add the ``gateway`` decorator to a view:
138138
To show a custom forbidden page, set ``CAS_CUSTOM_FORBIDDEN`` to a ``path.to.some_view``. Otherwise,
139139
a generic ``HttpResponseForbidden`` will be returned.
140140

141-
## Require SSL login
141+
## Require SSL Login
142142

143143
To force the service url to always target HTTPS, set ``CAS_FORCE_SSL_SERVICE_URL`` to ``True``.
144144

145+
## Automatically Create Users on First Login
146+
147+
By default, a stub user record will be created on the first successful CAS authentication
148+
using the username in the response. If this behavior is not desired set
149+
``CAS_AUTO_CREATE_USER`` to ``Flase``.
150+
145151
## Proxy Tickets
146152

147153
This fork also includes

cas/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
'CAS_CUSTOM_FORBIDDEN': None,
2020
'CAS_PGT_FETCH_WAIT': True,
2121
'CAS_FORCE_SSL_SERVICE_URL': False,
22+
'CAS_AUTO_CREATE_USER': True,
2223
}
2324

2425
for key, value in _DEFAULTS.items():

cas/backends.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,11 @@ def authenticate(self, ticket, service):
237237
user = User.objects.get(username__iexact=username)
238238
except User.DoesNotExist:
239239
# user will have an "unusable" password
240-
user = User.objects.create_user(username, '')
241-
user.save()
240+
if settings.CAS_AUTO_CREATE_USER:
241+
user = User.objects.create_user(username, '')
242+
user.save()
243+
else:
244+
user = None
242245
return user
243246

244247
def get_user(self, user_id):

cas/tests/test_backend.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,18 @@ def setUp(self):
1313
def test_get_user(self):
1414
backend = CASBackend()
1515

16-
self.assertEqual(backend.get_user(self.user.pk), self.user)
16+
self.assertEqual(backend.get_user(self.user.pk), self.user)
17+
18+
@mock.patch('cas.backends._verify')
19+
def test_user_auto_create(self, verify):
20+
username = 'faker'
21+
verify.return_value = username
22+
backend = CASBackend()
23+
24+
with self.settings(CAS_AUTO_CREATE_USER=False):
25+
user = backend.authenticate('fake', 'fake')
26+
self.assertIsNone(user)
27+
28+
with self.settings(CAS_AUTO_CREATE_USER=True):
29+
user = backend.authenticate('fake', 'fake')
30+
self.assertEquals(user.username, username)

0 commit comments

Comments
 (0)