def test_random_string(self): from tornado_utils import random_string x = random_string(10) self.assertEqual(len(x), 10) y = random_string(10) self.assertEqual(len(y), 10) self.assertNotEqual(x, y)
def _on_auth(self, user_struct): if not user_struct: raise HTTPError(500, "Twitter auth failed") #from pprint import pprint #pprint(user_struct) #if not user_struct.get('email'): # raise HTTPError(500, "No email provided") username = user_struct.get('username') #locale = user_struct.get('locale') # not sure what to do with this yet first_name = user_struct.get('first_name', user_struct.get('name')) last_name = user_struct.get('last_name') email = user_struct.get('email') #access_token = user_struct['access_token']['key'] #profile_image_url = user_struct.get('profile_image_url', None) user = self.find_user(username) if not user: # create a new account user = self.db.User() user.username = username user.email = email if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.set_password(random_string(20)) user.save() self.push_flash_message("Welcome!", "You username is %s" % user.username) self.notify_about_new_user(user, extra_message="Used Twitter") else: if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.save() self.push_flash_message("Logged in", "You username is %s" % user.username) user_settings = self.get_user_settings(user) if not user_settings: user_settings = self.create_user_settings(user) user_settings.twitter = user_struct if email: user_settings.email_verified = email user_settings.save() self.post_login_successful(user) self.set_secure_cookie("user", str(user._id), expires_days=100) self.redirect(self.get_next_url())
def _on_auth(self, user_struct): if not user_struct: raise HTTPError(500, "Twitter auth failed") #from pprint import pprint #pprint(user_struct) #if not user_struct.get('email'): # raise HTTPError(500, "No email provided") username = user_struct.get('username') #locale = user_struct.get('locale') # not sure what to do with this yet first_name = user_struct.get('first_name', user_struct.get('name')) last_name = user_struct.get('last_name') email = user_struct.get('email') #access_token = user_struct['access_token']['key'] #profile_image_url = user_struct.get('profile_image_url', None) user = self.find_user(username) if not user: # create a new account user = self.db.User() user.username = username user.email = email if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.set_password(random_string(20)) user.save() self.push_flash_message("Welcome!", "You username is %s" % user.username) self.notify_about_new_user(user, extra_message="Used Twitter") else: if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.save() self.push_flash_message("Logged in", "You username is %s" % user.username) user_settings = self.get_user_settings(user) if not user_settings: user_settings = self.create_user_settings(user) user_settings.twitter = user_struct if email: user_settings.email_verified = email user_settings.save() self.post_login_successful(user) self.set_secure_cookie("user", str(user._id), expires_days=100) self.redirect(self.get_next_url())
def _on_auth(self, user): if not user: raise HTTPError(500, "Google auth failed") if not user.get('email'): raise HTTPError(500, "No email provided") user_struct = user locale = user.get('locale') # not sure what to do with this yet first_name = user.get('first_name') last_name = user.get('last_name') username = user.get('username') email = user['email'] if not username: username = email.split('@')[0] user = self.db.User.one(dict(username=username)) if not user: user = self.db.User.one(dict(email=email)) if user is None: user = self.db.User.one( dict(email=re.compile(re.escape(email), re.I))) if not user: # create a new account user = self.db.User() user.username = username user.email = email if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.set_password(random_string(20)) user.save() self.notify_about_new_user(user, extra_message="Used Google OpenID") user_settings = self.get_user_settings(user) if not user_settings: user_settings = self.create_user_settings(user) user_settings.google = user_struct if user.email: user_settings.email_verified = user.email user_settings.save() self.post_login_successful(user) self.set_secure_cookie("user", str(user._id), expires_days=100) self.redirect(self.get_next_url())
def _on_auth(self, user): if not user: raise HTTPError(500, "Google auth failed") if not user.get('email'): raise HTTPError(500, "No email provided") user_struct = user locale = user.get('locale') # not sure what to do with this yet first_name = user.get('first_name') last_name = user.get('last_name') username = user.get('username') email = user['email'] if not username: username = email.split('@')[0] user = self.db.User.one(dict(username=username)) if not user: user = self.db.User.one(dict(email=email)) if user is None: user = self.db.User.one(dict(email=re.compile(re.escape(email), re.I))) if not user: # create a new account user = self.db.User() user.username = username user.email = email if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.set_password(random_string(20)) user.save() self.notify_about_new_user(user, extra_message="Used Google OpenID") user_settings = self.get_user_settings(user) if not user_settings: user_settings = self.create_user_settings(user) user_settings.google = user_struct if user.email: user_settings.email_verified = user.email user_settings.save() self.post_login_successful(user) self.set_secure_cookie("user", str(user._id), expires_days=100) self.redirect(self.get_next_url())
def _on_response(self, response): if 'email' in response.body: # all is well struct = tornado.escape.json_decode(response.body) assert struct['email'] email = struct['email'] user = self.db.User.find_by_email(email) if user: next_url = self.get_next_url() else: username = email.split('@')[0] c = 1 while True: try: if not self.db.User.find_by_username(username): break except MultipleResultsFound: pass # taken! c += 1 username = email.split('@')[0] + '-%d' % c # create a new account user = self.db.User() user.username = unicode(username) user.email = unicode(email) user.set_password(random_string(20)) user.save() next_url = self.reverse_url('settings') self.post_login_successful(user) self.set_secure_cookie('user', str(user._id), expires_days=100) self.write_json({'next_url': next_url}) else: self.write_json({'ERROR': response.body}) self.finish()
def _on_response(self, response): if 'email' in response.body: # all is well struct = tornado.escape.json_decode(response.body) assert struct['email'] email = struct['email'] user = self.db.User.find_by_email(email) if user: next_url = self.get_next_url() else: username = email.split('@')[0] c = 1 while True: try: if not self.db.User.find_by_username(username): break except MultipleResultsFound: pass # taken! c += 1 username = email.split('@')[0] + '-%d' % c # create a new account user = self.db.User() user.username = unicode(username) user.email = unicode(email) user.set_password(random_string(20)) user.save() next_url = self.reverse_url('settings') self.post_login_successful(user) self.set_secure_cookie('user', str(user._id), expires_days=100) self.write_json({'next_url': next_url}) else: self.write_json({'ERROR': response.body}) self.finish()
def _on_auth(self, user_struct): if not user_struct: raise HTTPError(500, "Facebook auth failed") logging.info(user_struct) # Example response: # {'username': u'peterbecom', # 'pic_square': u'http://profile.ak.fbcdn.net/hprofile-ak-snc4/174129_564710728_3557794_q.jpg', # 'first_name': u'Peter', # 'last_name': u'Bengtsson', # 'name': u'Peter Bengtsson', # 'locale': u'en_GB', # 'session_expires': 1303218000, # 'session_key': u'2.UYZ9b8YQuRMjdcFy0RtAbg__.3600.1303218000.0-564710728', # 'profile_url': u'http://www.facebook.com/peterbecom', # 'uid': 564710728} user = None username = user_struct.get('username') email = user_struct.get('email') first_name = user_struct.get('first_name') last_name = user_struct.get('last_name') if not username: username = self.make_username(first_name, last_name) user = self.find_user(username) if not user: if email: user = self.find_user_by_email(email) if not user: new = True user = self.db.User() user.username = username user.email = email if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.set_password(random_string(20)) else: new = False if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.save() if new: self.push_flash_message("Welcome!", "You username is %s" % user.username) self.notify_about_new_user(user, extra_message="Used Facebook to sign in") user_settings = self.get_user_settings(user) if not user_settings: user_settings = self.create_user_settings(user) user_settings.facebook = user_struct if email: user_settings.email_verified = email user_settings.save() self.post_login_successful(user) # XXX: expires_days needs to reflect user_struct['session_expires'] self.set_secure_cookie("user", str(user._id), expires_days=100) if new: self.redirect(self.reverse_url('settings')) else: self.redirect(self.get_next_url())
def _on_auth(self, user_struct): if not user_struct: raise HTTPError(500, "Facebook auth failed") logging.info(user_struct) # Example response: # {'username': u'peterbecom', # 'pic_square': u'http://profile.ak.fbcdn.net/hprofile-ak-snc4/174129_564710728_3557794_q.jpg', # 'first_name': u'Peter', # 'last_name': u'Bengtsson', # 'name': u'Peter Bengtsson', # 'locale': u'en_GB', # 'session_expires': 1303218000, # 'session_key': u'2.UYZ9b8YQuRMjdcFy0RtAbg__.3600.1303218000.0-564710728', # 'profile_url': u'http://www.facebook.com/peterbecom', # 'uid': 564710728} user = None username = user_struct.get('username') email = user_struct.get('email') first_name = user_struct.get('first_name') last_name = user_struct.get('last_name') if not username: username = self.make_username(first_name, last_name) user = self.find_user(username) if not user: if email: user = self.find_user_by_email(email) if not user: new = True user = self.db.User() user.username = username user.email = email if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.set_password(random_string(20)) else: new = False if first_name: user.first_name = first_name if last_name: user.last_name = last_name user.save() if new: self.push_flash_message("Welcome!", "You username is %s" % user.username) self.notify_about_new_user( user, extra_message="Used Facebook to sign in") user_settings = self.get_user_settings(user) if not user_settings: user_settings = self.create_user_settings(user) user_settings.facebook = user_struct if email: user_settings.email_verified = email user_settings.save() self.post_login_successful(user) # XXX: expires_days needs to reflect user_struct['session_expires'] self.set_secure_cookie("user", str(user._id), expires_days=100) if new: self.redirect(self.reverse_url('settings')) else: self.redirect(self.get_next_url())