Example #1
0
def manage_user(access_token, user_data):
    """Manage the user after signin"""
    # We have to store the oauth_token in the session to get the USER fields

    user = user_repo.get_by(google_user_id=user_data['id'])

    # user never signed on
    if user is None:
        google_token = dict(oauth_token=access_token)
        info = dict(google_token=google_token)
        name = username_from_full_name(user_data['name'])
        user = user_repo.get_by_name(name)

        email = user_repo.get_by(email_addr=user_data['email'])

        if ((user is None) and (email is None)):
            user = User(fullname=user_data['name'],
                        name=name,
                        email_addr=user_data['email'],
                        google_user_id=user_data['id'],
                        info=info)
            user_repo.save(user)
            if newsletter.is_initialized():
                newsletter.subscribe_user(user)
            return user
        else:
            return None
    else:
        # Update the name to fit with new paradigm to avoid UTF8 problems
        if type(user.name) == unicode or ' ' in user.name:
            user.name = username_from_full_name(user.name)
            user_repo.update(user)
        return user
Example #2
0
def manage_user(access_token, user_data):
    """Manage the user after signin"""
    # We have to store the oauth_token in the session to get the USER fields

    user = user_repo.get_by(google_user_id=user_data['id'])
    google_token = dict(oauth_token=access_token)

    # user never signed on
    if user is None:
        info = dict(google_token=google_token)
        name = username_from_full_name(user_data['name'])
        user = user_repo.get_by_name(name)

        email = user_repo.get_by(email_addr=user_data['email'])

        if ((user is None) and (email is None)):
            user = User(fullname=user_data['name'],
                        name=name,
                        email_addr=user_data['email'],
                        google_user_id=user_data['id'],
                        info=info)
            user_repo.save(user)
            if newsletter.is_initialized():
                newsletter.subscribe_user(user)
            return user
        else:
            return None
    else:
        user.info['google_token'] = google_token
        # Update the name to fit with new paradigm to avoid UTF8 problems
        if type(user.name) == unicode or ' ' in user.name:
            user.name = username_from_full_name(user.name)
        user_repo.save(user)
        return user
Example #3
0
def manage_user(access_token, user_data):
    """Manage the user after signin"""
    user = user_repo.get_by(facebook_user_id=user_data['id'])
    facebook_token = dict(oauth_token=access_token)

    if user is None:
        info = dict(facebook_token=facebook_token)
        name = username_from_full_name(user_data['name'])
        user_exists = user_repo.get_by_name(name) is not None
        # NOTE: Sometimes users at Facebook validate their accounts without
        # registering an e-mail (see this http://stackoverflow.com/a/17809808)
        email_exists = (user_data.get('email') is not None and
                        user_repo.get_by(email_addr=user_data['email']) is not None)

        if not user_exists and not email_exists:
            if not user_data.get('email'):
                user_data['email'] = name
            user = User(fullname=user_data['name'],
                        name=name,
                        email_addr=user_data['email'],
                        facebook_user_id=user_data['id'],
                        info=info)
            user_repo.save(user)
            if newsletter.is_initialized() and user.email_addr != name:
                newsletter.subscribe_user(user)
            return user
        else:
            return None
    else:
        user.info['facebook_token'] = facebook_token
        user_repo.save(user)
        return user
Example #4
0
    def test_it_removes_non_ascii_chars_unicode(self):
        name = u"ßetaÑapa"
        expected_username = u"etaapa"

        obtained = util.username_from_full_name(name)

        assert obtained == expected_username, obtained
Example #5
0
    def test_it_removes_capital_letters_unicode(self):
        name = u"JOHN"
        expected_username = u"john"

        obtained = util.username_from_full_name(name)

        assert obtained == expected_username, obtained
Example #6
0
    def test_it_removes_whitespaces_unicode(self):
        name = u"john benjamin toshack"
        expected_username = u"johnbenjamintoshack"

        obtained = util.username_from_full_name(name)

        assert obtained == expected_username, obtained
Example #7
0
def manage_user(access_token, user_data):
    """Manage the user after signin"""
    user = user_repo.get_by(facebook_user_id=user_data['id'])

    if user is None:
        facebook_token = dict(oauth_token=access_token)
        info = dict(facebook_token=facebook_token)
        name = username_from_full_name(user_data['name'])
        user_exists = user_repo.get_by_name(name) is not None
        # NOTE: Sometimes users at Facebook validate their accounts without
        # registering an e-mail (see this http://stackoverflow.com/a/17809808)
        email_exists = (user_data.get('email') is not None and
                        user_repo.get_by(email_addr=user_data['email']) is not None)

        if not user_exists and not email_exists:
            if not user_data.get('email'):
                user_data['email'] = name
            user = User(fullname=user_data['name'],
                        name=name,
                        email_addr=user_data['email'],
                        facebook_user_id=user_data['id'],
                        info=info)
            user_repo.save(user)
            if newsletter.is_initialized() and user.email_addr != name:
                newsletter.subscribe_user(user)
            return user
        else:
            return None
    else:
        return user
Example #8
0
def manage_user_login(user, user_data, next_url):
    """Manage user login."""
    if user is None:
        # Give a hint for the user
        user = user_repo.get_by(email_addr=user_data['email'])
        if user is None:
            name = username_from_full_name(user_data['name'])
            user = user_repo.get_by_name(name)

        msg, method = get_user_signup_method(user)
        flash(msg, 'info')
        if method == 'local':
            return redirect(url_for_app_type('account.forgot_password',
                                             _hash_last_flash=True))
        else:
            return redirect(url_for_app_type('account.signin',
                                             _hash_last_flash=True))
    else:
        login_user(user, remember=True)
        flash("Welcome back %s" % user.fullname, 'success')
        if user.newsletter_prompted is False and newsletter.is_initialized():
            return redirect(url_for_app_type('account.newsletter_subscribe',
                                             next=next_url,
                                             _hash_last_flash=True))
        return redirect(next_url)
Example #9
0
    def test_it_removes_capital_letters(self):
        name = "JOHN"
        expected_username = b'john'

        obtained = util.username_from_full_name(name)

        assert obtained == expected_username, (obtained, expected_username)
 def setUp(self):
     super(TestFacebook, self).setUp()
     self.user_data = {
         "id": 1234567890,
         "email": "*****@*****.**",
         "first_name": "Mauricio",
         "last_name": "Perez Sanchez",
         "name": "Mauricio Perez Sanchez"
     }
     self.name = username_from_full_name(self.user_data['name'])
Example #11
0
 def setUp(self):
     super(TestFacebook, self).setUp()
     self.user_data = {
         "id": 1234567890,
         "email": "*****@*****.**",
         "first_name": "Mauricio",
         "last_name": "Perez Sanchez",
         "name": "Mauricio Perez Sanchez"
     }
     self.name = username_from_full_name(self.user_data['name'])
Example #12
0
 def setUp(self):
     super(TestFacebook, self).setUp()
     self.user_data = {
         "id": 1234567890,
         "email": '*****@*****.**',
         "first_name": 'Mauricio',
         "last_name": 'Perez Sanchez',
         "name": 'Mauricio Perez Sanchez'
     }
     self.name = username_from_full_name(self.user_data['name'])
     newsletter.app = None
Example #13
0
def add_through_email(user_by_email, user_data):
    if (user_by_email.name == username_from_full_name(
            user_data['name']).decode('utf-8')):
        name = get_mykaarma_username_from_full_name(user_data['name'])
        user = user_repo.get_by_name(name)
        while (user is not None):
            name = get_mykaarma_username_from_full_name(user_data['name'])
            user = user_repo.get_by_name(name)
        user_by_email.name = name
    user_by_email.mykaarma_user_id = user_data['id']
    user_repo.save(user_by_email)
    return user_by_email
Example #14
0
def manage_user_login(user, user_data, next_url):
    """Manage user login."""
    if user is None:
        # Give a hint for the user
        user = user_repo.get_by(email_addr=user_data["email"])
        if user is None:
            name = username_from_full_name(user_data["name"])
            user = user_repo.get_by_name(name)

        msg, method = get_user_signup_method(user)
        flash(msg, "info")
        if method == "local":
            return redirect(url_for("account.forgot_password"))
        else:
            return redirect(url_for("account.signin"))
    else:
        login_user(user, remember=True)
        flash("Welcome back %s" % user.fullname, "success")
        if user.newsletter_prompted is False and newsletter.is_initialized():
            return redirect(url_for("account.newsletter_subscribe", next=next_url))
        return redirect(next_url)