# HG changeset patch # User durandn # Date 1460455148 -7200 # Node ID c765c06f0b91579f0f91dab7594658ba98d165c4 # Parent 8745c7bcf0966084374dd8a2286ffb32c8c3165d reorganized userfields populating in Auth Code flow + assigning model permissions in signal + added fields for extracting first and last name diff -r 8745c7bcf096 -r c765c06f0b91 server/src/metaeducation/mtdc_oauth_provider/provider.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 diff -r 8745c7bcf096 -r c765c06f0b91 server/src/metaeducation/mtdc_oauth_provider/views.py --- 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): diff -r 8745c7bcf096 -r c765c06f0b91 server/src/metaeducation/settings/__init__.py --- 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 diff -r 8745c7bcf096 -r c765c06f0b91 server/src/metaeducation/signals.py --- 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