--- a/server/src/remie/apps.py Wed Sep 16 20:19:54 2015 +0200
+++ b/server/src/remie/apps.py Wed Sep 16 21:41:11 2015 +0200
@@ -9,4 +9,4 @@
verbose_name = 'REMIE'
def ready(self):
- pass
+ import remie.signals
--- a/server/src/remie/cas.py Wed Sep 16 20:19:54 2015 +0200
+++ b/server/src/remie/cas.py Wed Sep 16 21:41:11 2015 +0200
@@ -1,5 +1,3 @@
-from django.conf import settings
-from django.contrib.auth import get_user_model
from django.utils.six.moves import urllib_parse
from django.utils.six.moves.urllib_request import urlopen, Request
from django_cas_ng.cas import CASClientV2
@@ -49,30 +47,3 @@
return None, None, None
finally:
page.close()
-
- def get_or_create_user(self, username, attributes):
- """get or create a user
- Return (created, user).
- The returned user can be `None`.
- """
- if not username:
- return None, False
-
- User = get_user_model()
-
- if attributes is None:
- attributes = {}
-
- try:
- user = User.objects.get(**{User.USERNAME_FIELD: username})
- created = False
- except User.DoesNotExist:
- # check if we want to create new users, if we don't fail auth
- create = getattr(settings, 'CAS_CREATE_USER', True)
- if not create:
- return None, False
- # user will have an "unusable" password
- user = User.objects.create_user(username=username, password='', first_name=attributes.get('first_name',''), last_name=attributes.get('last_name', ''))
- user.save()
- created = True
- return created, user
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/server/src/remie/signals.py Wed Sep 16 21:41:11 2015 +0200
@@ -0,0 +1,22 @@
+from django.conf import settings
+from django.contrib.auth.models import Group
+from django.dispatch import receiver
+from django_cas_ng.signals import cas_user_authenticated
+
+@receiver(cas_user_authenticated)
+def update_created_user(sender, **kwargs):
+
+ created = kwargs.get('created', False)
+ user = kwargs.get('user', None)
+ attributes = kwargs.get('attributes', {})
+
+ if not created or not user:
+ return
+
+ user.first_name = attributes.get('first_name','')
+ user.last_name = attributes.get('last_name', '')
+ cas_user_group_name = getattr(settings, 'CAS_USER_DEFAULT_GROUP', None)
+ if cas_user_group_name and cas_user_group_name not in [g.name for g in user.groups.all()]:
+ cas_user_group, _ = Group.objects.get_or_create(name=cas_user_group_name)
+ user.groups.add(cas_user_group)
+ user.save()
--- a/server/src/remieplt/__init__.py Wed Sep 16 20:19:54 2015 +0200
+++ b/server/src/remieplt/__init__.py Wed Sep 16 21:41:11 2015 +0200
@@ -1,4 +1,4 @@
-VERSION = (0, 0, 19, "final", 0)
+VERSION = (0, 0, 20, "final", 0)
VERSION_STR = unicode(".".join(map(lambda i:"%02d" % (i,), VERSION[:2])))
--- a/server/src/remieplt/settings/__init__.py Wed Sep 16 20:19:54 2015 +0200
+++ b/server/src/remieplt/settings/__init__.py Wed Sep 16 21:41:11 2015 +0200
@@ -198,6 +198,7 @@
CAS_URLPARAMETER_NAME = "casticket"
CAS_VERSION = "remie.cas.CASClientRemie"
+CAS_USER_DEFAULT_GROUP = "casuser"
SOCIAL_AUTH_COMPLETE_URL_NAME = 'complete'
SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'associate_complete'