Example #1
0
def user_get_or_create(email, first_name, last_name, service, service_user_id):
    user = user_datastore.get_user(email)
    # If user email search fails, we search for the user service id
    if not user:
        user_oauth = UserOauth.query\
            .filter_by(service=service, service_user_id=service_user_id)\
            .first()
        # If we find it, we get the user from the datastore
        if user_oauth:
            user = user_datastore.get_user(user_oauth.user_id)
    # If user exsits, update
    if user:
        user.last_login_at = user.current_login_at
        user.last_login_ip = user.current_login_ip
        user.current_login_at = datetime.datetime.now()
        user.current_login_ip = request.remote_addr
        if user.login_count:
            user.login_count += 1
        else:
            user.login_count = 1
        db.session.commit()
    else:
        # If user does not exist, create and assign roles
        # Generate unique username, by searching for an existing username and
        # progressively increment until a free one is found
        username = email.split("@")[0]
        index = 1
        while User.query.filter_by(username=username).first():
            username = "******".format(username, index)
            index += 1

        user = user_datastore.create_user(
            email=email,
            username=username,
            password=''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5)),
            active=True,
            first_name=first_name,
            last_name=last_name,
            current_login_at=datetime.datetime.now(),
            current_login_ip=request.remote_addr,
            login_count=1
            )
        db.session.commit()

        user_oauth = UserOauth(
            user_id=user.id,
            service=service,
            service_user_id=service_user_id)
        db.session.add(user_oauth)

        user_karma = UserKarma(
            user_id=user.id)
        db.session.add(user_karma)
        db.session.commit()

    return user
Example #2
0
def setup():
    import getpass
    from flask_security.utils import encrypt_password
    print("Please input the user data for the admin (you can edit later)")
    while True:
        admin_username = raw_input('Admin username:'******'Admin password:'******'Admin email:')
        if user_datastore.find_user(email=admin_email):
            print ("Email aready in use")
        else:
            break
    admin_role = user_datastore.find_or_create_role('admin')
    admin = user_datastore.create_user(
        username=admin_username,
        password=encrypt_password(admin_password),
        email=admin_email)
    db.session.commit()
    user_datastore.add_role_to_user(admin, admin_role)
    db.session.commit()
    # Add karma for the admin
    user_karma = UserKarma(
        user_id=admin.id)
    db.session.add(user_karma)
    db.session.commit()
    print("Admin user succesfully created!")
    # Add default category
    category_default = Category(
        name='News',
        url='news',
        order=0)
    db.session.add(category_default)
    db.session.commit()
    print("Added default News category")
    # Add default post types
    post_types = ['link', 'text']
    for t in post_types:
        post_type = PostType(
            name=t,
            url=t)
        db.session.add(post_type)
        db.session.commit()
        print("Added post type {0}".format(t))
Example #3
0
def user_get_or_create(email, first_name, last_name, service, service_user_id):
    user = user_datastore.get_user(email)
    # If user email search fails, we search for the user service id
    if not user:
        user_oauth = UserOauth.query\
            .filter_by(service=service, service_user_id=service_user_id)\
            .first()
        # If we find it, we get the user from the datastore
        if user_oauth:
            user = user_datastore.get_user(user_oauth.user_id)
    # If user exsits, update
    if user:
        user.last_login_at = user.current_login_at
        user.last_login_ip = user.current_login_ip
        user.current_login_at = datetime.datetime.now()
        user.current_login_ip = request.remote_addr
        if user.login_count:
            user.login_count += 1
        else:
            user.login_count = 1
        db.session.commit()
    else:
        # If user does not exist, create and assign roles
        # Generate unique username, by searching for an existing username and
        # progressively increment until a free one is found
        username = email.split("@")[0]
        index = 1
        while User.query.filter_by(username=username).first():
            username = "******".format(username, index)
            index += 1

        user = user_datastore.create_user(
            email=email,
            username=username,
            password=''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5)),
            active=True,
            first_name=first_name,
            last_name=last_name,
            current_login_at=datetime.datetime.now(),
            current_login_ip=request.remote_addr,
            login_count=1
            )
        db.session.commit()

        user_oauth = UserOauth(
            user_id=user.id,
            service=service,
            service_user_id=service_user_id)
        db.session.add(user_oauth)
        db.session.commit()
        user_assign_karma(user)

    return user
Example #4
0
def setup():
    import getpass
    from flask_security.utils import encrypt_password
    print("Please input the user data for the admin (you can edit later)")
    while True:
        admin_username = raw_input('Admin username:'******'Admin password:'******'Admin email:')
        if user_datastore.find_user(email=admin_email):
            print("Email aready in use")
        else:
            break
    admin_role = user_datastore.find_or_create_role('admin')
    world_role = user_datastore.find_or_create_role('world')
    admin = user_datastore.create_user(
        username=admin_username,
        password=encrypt_password(admin_password),
        email=admin_email)
    db.session.commit()
    user_datastore.add_role_to_user(admin, admin_role)
    db.session.commit()
    # Add karma for the admin
    user_karma = UserKarma(user_id=admin.id)
    db.session.add(user_karma)
    db.session.commit()
    print("Admin user succesfully created!")
    # Add default category
    category_default = Category(name='News', url='news', order=0)
    db.session.add(category_default)
    db.session.commit()
    print("Added default News category")
    # Add default post types
    post_types = ['link', 'text']
    for t in post_types:
        post_type = PostType(name=t, url=t)
        db.session.add(post_type)
        db.session.commit()
        print("Added post type {0}".format(t))
    print('Congrats, Dillo was setup successfully!')