]> git.parisson.com Git - django-social-auth.git/commitdiff
introduced setting SOCIAL_AUTH_PROTECTED_USER_FIELDS
authorHannes Struss <x@hannesstruss.de>
Thu, 7 Jun 2012 16:43:58 +0000 (18:43 +0200)
committerHannes Struss <x@hannesstruss.de>
Thu, 7 Jun 2012 16:43:58 +0000 (18:43 +0200)
this can be a tuple of field-names on the user object, which
django-social-auth will not overwrite when the user already existed, i.e.
was not created in the current auth process.

social_auth/backends/pipeline/user.py

index 9ebaf0342e15d60b91953447aabae68b8cf4708e..6cd36768594d9aeff4228f23edb964df6c292532 100644 (file)
@@ -91,7 +91,9 @@ def update_user_details(backend, details, response, user, is_new=False, *args,
     if not setting('SOCIAL_AUTH_CHANGE_SIGNAL_ONLY'):
         for name, value in details.iteritems():
             # do not update username, it was already generated
-            if name in (USERNAME, 'id', 'pk'):
+            # do not update configured fields if user already existed
+            if name in (USERNAME, 'id', 'pk') or (not is_new and
+                name in setting('SOCIAL_AUTH_PROTECTED_USER_FIELDS', [])):
                 continue
             if value and value != getattr(user, name, None):
                 setattr(user, name, value)