]> git.parisson.com Git - django-social-auth.git/commitdiff
Merging with 0.1.3 version of base library.
authorStas Kravets <skravets@internal-rfc1918.hn.nnov.stream.ru>
Wed, 12 Jan 2011 16:07:52 +0000 (19:07 +0300)
committerStas Kravets <skravets@internal-rfc1918.hn.nnov.stream.ru>
Wed, 12 Jan 2011 16:07:52 +0000 (19:07 +0300)
1  2 
example/app/views.py
social_auth/auth.py
social_auth/backends.py
social_auth/conf.py

index 73c9618f52609188c05ab873e27286fb2b1ba9b5,74d2cffddb2188962925852d47aa929e76bcc65f..edc106289b65a8b9f44689cee5f00cf338aafc19
@@@ -5,49 -6,11 +6,18 @@@ from django.shortcuts import render_to_
  
  
  def home(request):
-     return HttpResponse(Template(
-     """
-     <html>
-       <head>
-         <title>Social access</title>
-       </head>
-       <body>
-         <h1>Login using any of the following methods:</h1>
-         <div style="padding-left: 30px;">
-           <div>
-             <h2>Login using <a href="http://oauth.net/">OAuth</a> from:</h2>
-             <ul>
-               <li><a href="/login/twitter/">Twitter</a></li>
-               <li><a href="/login/facebook/">Facebook</a></li>
-               <li><a href="/login/orkut/">Orkut</a></li>
-             </ul>
-           </div>
-           <div>
-             <h2>Login using <a href="http://openid.net/">OpenId</a> from:</h2>
-             <ul>
-               <li><a href="/login/google/">Google</a></li>
-               <li><a href="/login/yahoo/">Yahoo</a></li>
-               <li>
+     """Home view, displays login mechanism"""
+     if request.user.is_authenticated():
+         return HttpResponseRedirect('done')
+     else:
+         return render_to_response('home.html', None, RequestContext(request))
 +                <form action="/login/lj/" method="post">{% csrf_token %}
 +                  <label for="openid_lj_user">LiveJournal user:</label>
 +                  <input id="openid_lj_user" type="text" value="" name="openid_lj_user" />
 +                  <input type="submit" />
 +                </form>
 +              </li>
 +              <li>
-                 <form action="/login/openid/" method="post">{% csrf_token %}
-                   <label for="openid_identifier">Other provider:</label>
-                   <input id="openid_identifier" type="text" value="" name="openid_identifier" />
-                   <input type="submit" />
-                 </form>
-               </li>
-             </ul>
-           </div>
-         </div>
-       </body>
-     </html>
-     """).render(Context(RequestContext(request))),
-     content_type='text/html;charset=UTF-8')
  
  @login_required
  def done(request):
index bceee3e6dc8bd398624374a844b074cf68212dcc,b756e1be77805b00b5961f553b2d25a316f781dc..bd055cc8712215ee1944cbbe2c8d1ba23bf9b169
@@@ -15,10 -15,9 +15,10 @@@ from django.contrib.auth import authent
  
  from .store import DjangoOpenIDStore
  from .backends import TwitterBackend, OrkutBackend, FacebookBackend, \
-                       OpenIDBackend
+                       OpenIDBackend, GoogleBackend, YahooBackend
  from .conf import AX_ATTRS, SREG_ATTR, OPENID_ID_FIELD, SESSION_NAME, \
                    OPENID_GOOGLE_URL, OPENID_YAHOO_URL, TWITTER_SERVER, \
 +                  OPENID_LJ_URL, OPENID_LJ_USER_FIELD, \
                    TWITTER_REQUEST_TOKEN_URL, TWITTER_ACCESS_TOKEN_URL, \
                    TWITTER_AUTHORIZATION_URL, TWITTER_CHECK_AUTH, \
                    FACEBOOK_CHECK_AUTH, FACEBOOK_AUTHORIZATION_URL, \
index a8d8936423cee0fd86f89f9140070862c72cdb93,fc5fd302a83848ddd87e7e5d8c6eabf758ab3593..3c8eade51ed2425f14c1979b614de6af389d9160
@@@ -125,31 -104,26 +104,35 @@@ class SocialAuthBackend(ModelBackend)
          """Return default blank user extra data"""
          return ''
  
-     def update_user_details(self, user, response, details):
-         """Update user details with new (maybe) data"""
+     def update_user_details(self, user, response, details, new_user=False):
+         """Update user details with (maybe) new data. Username is not
+         changed if associating a new credential."""
          changed = False
 -        for name, value in details.iteritems():
 +        
 +        if not getattr(settings, 'SOCIAL_AUTH_CHANGE_SIGNAL_ONLY', False):
 +            for name, value in details.iteritems():
+             # not update username if user already exists
+             if not new_user and name == USERNAME:
+                 continue
 -            if value and value != getattr(user, name, value):
 -                setattr(user, name, value)
 -                changed = True
 -
 +                if value and value != getattr(user, name, value):
 +                    setattr(user, name, value)
 +                    changed = True
 +                
          # Fire a pre-update signal sending current backend instance,
          # user instance (created or retrieved from database), service
          # response and processed details, signal handlers must return
          # True or False to signal that something has changed
-         updated = filter(bool, pre_update.send(sender=self, user=user,
+         updated = filter(None, pre_update.send(sender=self, user=user,
                                                 response=response,
                                                 details=details))
 -        if changed or len(updated) > 0:
 +        # Looking for at least one update
 +        has_update = False
 +        for result in updated:
 +            if result[1]:
 +                has_update = True
 +                break
 +        
 +        if changed or has_update:
              user.save()
  
      def get_user_id(self, details, response):
index 92cb89532e705598d26c7fe187c170675c468ba5,b3b145c2732dad00e2630d6658357397142dea39..a2cec516d2d0c851972230cd6e08708f9e422829
@@@ -36,11 -39,9 +39,11 @@@ AX_SCHEMA_ATTRS = 
      ('http://axschema.org/namePerson/last', 'last_name'),
      ('http://axschema.org/namePerson/friendly', 'nickname'),
  ]
- AX_ATTRS               = AX_SCHEMA_ATTRS + OLD_AX_ATTRS
- SREG_ATTR              = ['email', 'fullname', 'nickname']
- OPENID_ID_FIELD        = 'openid_identifier'
- SESSION_NAME           = 'openid'
+ AX_ATTRS = AX_SCHEMA_ATTRS + OLD_AX_ATTRS
+ SREG_ATTR = ['email', 'fullname', 'nickname']
+ OPENID_ID_FIELD = 'openid_identifier'
+ SESSION_NAME = 'openid'
 -OPENID_GOOGLE_URL = 'https://www.google.com/accounts/o8/id'
 +OPENID_GOOGLE_URL      = 'https://www.google.com/accounts/o8/id'
- OPENID_YAHOO_URL       = 'http://yahoo.com'
+ OPENID_YAHOO_URL = 'http://yahoo.com'
 +OPENID_LJ_URL          = 'http://%s.livejournal.com'
 +OPENID_LJ_USER_FIELD   = 'openid_lj_user'