reorganized userfields populating in Auth Code flow + assigning model permissions in signal + added fields for extracting first and last name
--- 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