# HG changeset patch # User ymh # Date 1442432471 -7200 # Node ID 8d5035e5adafe683f64ef379425162605f80b262 # Parent c83cc2499cea2981320ed79f2ca99b880886a1ad change the way the user is created after a cas login diff -r c83cc2499cea -r 8d5035e5adaf server/src/remie/apps.py --- 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 diff -r c83cc2499cea -r 8d5035e5adaf server/src/remie/cas.py --- 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 diff -r c83cc2499cea -r 8d5035e5adaf server/src/remie/signals.py --- /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() diff -r c83cc2499cea -r 8d5035e5adaf server/src/remieplt/__init__.py --- 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]))) diff -r c83cc2499cea -r 8d5035e5adaf server/src/remieplt/settings/__init__.py --- 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'