Esempio n. 1
0
    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)
Esempio n. 2
0
    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())
Esempio n. 3
0
    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())
Esempio n. 4
0
    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())
Esempio n. 5
0
    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())
Esempio n. 6
0
    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()
Esempio n. 7
0
    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()
Esempio n. 8
0
    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())
Esempio n. 9
0
    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())