Ejemplo n.º 1
0
 def googleauth(self,id=0):
     """
     User is coming in from google, should have an auth token
     """
     # NEED SITE????  Or does that not make sense?
     import gdata
     import gdata.contacts
     import gdata.contacts.service
     authsub_token = self.get_argument("token")
     log.info('calling gdata_authsubtoke = %s' % (authsub_token))
     #TODO:  upgrade to gdata 1.2+ which breaks this
     gd_client = gdata.contacts.service.ContactsService()
     gd_client.auth_token = authsub_token
     gd_client.UpgradeToSessionToken()
     query = gdata.contacts.service.ContactsQuery()
     query.max_results = 2
     feed = gd_client.GetContactsFeed(query.ToUri())
     email = feed.author[0].email.text
     name = feed.author[0].name.text
     user = meta.DBSession.query(Person).filter_by(
                 email=email.lower()).first()
     if not user:
         user = Person(site_id=1,email=email,displayname=name)
         user.authn = 'google'
         user.save()
         log.info('creating a google user')
     self.set_current_user(user,is_authenticated = True,islogon=True)
     expires_seconds = 60*60*24*31
     self.set_cookie('dsuserkey', user.user_uniqueid,expires_days=31)
     if 'url' in self.request.arguments:
         url = request.GET['url']
         self.redirect(str(url))
     self.render('/comment/comment_login.html')