reorganized userfields populating in Auth Code flow + assigning model permissions in signal + added fields for extracting first and last name
authordurandn
Tue, 12 Apr 2016 11:59:08 +0200
changeset 65 c765c06f0b91
parent 64 8745c7bcf096
child 66 0cbcfc82b5dc
reorganized userfields populating in Auth Code flow + assigning model permissions in signal + added fields for extracting first and last name
server/src/metaeducation/mtdc_oauth_provider/provider.py
server/src/metaeducation/mtdc_oauth_provider/views.py
server/src/metaeducation/settings/__init__.py
server/src/metaeducation/signals.py
--- a/server/src/metaeducation/mtdc_oauth_provider/provider.py	Mon Apr 11 17:12:51 2016 +0200
+++ b/server/src/metaeducation/mtdc_oauth_provider/provider.py	Tue Apr 12 11:59:08 2016 +0200
@@ -10,7 +10,7 @@
     package = 'metaeducation.mtdc_oauth_provider'
     
     def extract_uid(self, data):
-        return data.get(settings.MTDC_USERID_FIELD_NAME, '')
+        return data.get(settings.MTDC_USERID_FIELD_NAME, "")
 
     def extract_common_fields(self, data):
         return {"username": data.get(settings.MTDC_USERNAME_FIELD_NAME, "")}
@@ -18,8 +18,10 @@
     def extract_extra_data(self, data):
         return {
             "username": data.get(settings.MTDC_USERNAME_FIELD_NAME, ""),
-            "external_id": data.get(settings.MTDC_USERID_FIELD_NAME),
-            "uai": data.get(settings.MTDC_UAI_FIELD_NAME)
+            "external_id": data.get(settings.MTDC_USERID_FIELD_NAME, ""),
+            "uai": data.get(settings.MTDC_UAI_FIELD_NAME, ""),
+            "first_name": data.get(settings.MTDC_FIRSTNAME_FIELD_NAME, ""),
+            "last_name": data.get(settings.MTDC_LASTNAME_FIELD_NAME, "")
         }
     
 providers.registry.register(MtdcProvider)
\ No newline at end of file
--- a/server/src/metaeducation/mtdc_oauth_provider/views.py	Mon Apr 11 17:12:51 2016 +0200
+++ b/server/src/metaeducation/mtdc_oauth_provider/views.py	Tue Apr 12 11:59:08 2016 +0200
@@ -75,9 +75,6 @@
             else:
                 logger.debug("AUTHORIZATION CODE AUTH: user %r does not exist, creating new user and populating", sociallogin.account.extra_data.get('external_id', 'NO_ID'))
                 user = get_user_model()()
-                user.username = sociallogin.account.extra_data.get('username', '')
-                user.external_id = sociallogin.account.extra_data.get('external_id', '')
-                user.uai = sociallogin.account.extra_data.get('uai', '')
             return user
         else:
             logger.debug("AUTHORIZATION CODE AUTH: no external_id in extra data")
@@ -87,15 +84,13 @@
                       request,
                       sociallogin,
                       data):
-        username = data.get('username')
         user = sociallogin.user
-        user.username = username
+        user.username = sociallogin.account.extra_data.get('username', '')
+        user.external_id = sociallogin.account.extra_data.get('external_id', '')
+        user.uai = sociallogin.account.extra_data.get('uai', '')
+        user.first_name = sociallogin.account.extra_data.get('first_name', '')
+        user.last_name = sociallogin.account.extra_data.get('last_name', '')
         user.save()
-        view_permission = Permission.objects.get(codename="view_renkan")
-        add_permission = Permission.objects.get(codename="add_renkan")
-        change_permission = Permission.objects.get(codename="change_renkan")
-        delete_permission = Permission.objects.get(codename="delete_renkan")
-        user.user_permissions.add(view_permission, add_permission, change_permission, delete_permission)
         return user
     
     def complete_login(self, request, app, token, **kwargs):
--- a/server/src/metaeducation/settings/__init__.py	Mon Apr 11 17:12:51 2016 +0200
+++ b/server/src/metaeducation/settings/__init__.py	Tue Apr 12 11:59:08 2016 +0200
@@ -138,6 +138,8 @@
 MTDC_USERNAME_FIELD_NAME = "displayName"
 MTDC_USERID_FIELD_NAME = "id"
 MTDC_UAI_FIELD_NAME = "ENTPersonStructRattachUAI"
+MTDC_FIRSTNAME_FIELD_NAME = "givenName"
+MTDC_LASTNAME_FIELD_NAME = "sn"
 
 ITOP_PF_CODE = "ITOP" # Parameter for the reference request, should be provided by Itop
 
--- a/server/src/metaeducation/signals.py	Mon Apr 11 17:12:51 2016 +0200
+++ b/server/src/metaeducation/signals.py	Tue Apr 12 11:59:08 2016 +0200
@@ -49,7 +49,7 @@
             )
             logger.debug("REFERENCING RENKAN: response is %r", reference_response.status_code)
 
-def assign_permission(sender, instance, created, **kwargs):
+def assign_objects_permissions(sender, instance, created, **kwargs):
     from renkanmanager.models import Renkan, Revision, Workspace
     if sender == Renkan and created:
         creator = instance.creator
@@ -69,6 +69,14 @@
         assign_perm('renkanmanager.change_workspace', creator, instance)
         assign_perm('renkanmanager.delete_workspace', creator, instance)
 
+def assign_user_permissions(sender, instance, created, **kwargs):
+    if sender == get_user_model() and created:
+        logger.debug("SIGNALS: USER %r WAS CREATED, ASSIGNING MODEL PERMISSIONS", instance)
+        assign_perm('renkanmanager.view_renkan', instance)
+        assign_perm('renkanmanager.add_renkan', instance)
+        assign_perm('renkanmanager.change_renkan', instance)
+        assign_perm('renkanmanager.delete_renkan', instance)
+
 def log_user_logged_in(sender, request, user, **kwargs):
     logger.debug("LOGGING IN: user logged in: %r", user)
 
@@ -84,6 +92,7 @@
 if not 'test' in sys.argv:
     post_save.connect(reference_created_renkan)
 post_save.connect(token_updated)
-post_save.connect(assign_permission)
+post_save.connect(assign_objects_permissions)
+post_save.connect(assign_user_permissions)
 user_logged_in.connect(log_user_logged_in)
 user_logged_out.connect(log_user_logged_out)
\ No newline at end of file