def user_creation(num_users_):
    # count how many users are in database. if it is already populated don't add any more.
    user_count = FlicketUser.query.count()
    if user_count >= num_users_:
        print('Number of users already satisfied.')
        return
    else:
        num_users_ = num_users_ - user_count

    for i in range(user_count, num_users_):

        username, name, password = create_random_user()

        # check username doesn't already exist
        query_ = FlicketUser.query.filter_by(username=username).first()

        first, last = base_email.split('@')

        if not query_:
            new_user = FlicketUser(username=username,
                                   name=name,
                                   password=hash_password(password),
                                   email='{}+{}@{}'.format(
                                       first, username, last),
                                   date_added=datetime.datetime.now())
            db.session.add(new_user)
            db.session.commit()

            print('#{} Added new user {}'.format(new_user.id,
                                                 username.ljust(25)),
                  end="\r")
    print("")
Esempio n. 2
0
def get_users():
    name = request.args.get('name')
    users = FlicketUser.query
    if name:
        users = users.filter(FlicketUser.name.ilike('%{}%'.format(name)))
    page = request.args.get('page', 1, type=int)
    per_page = min(request.args.get('per_page', 10, type=int), 100)
    data = FlicketUser.to_collection_dict(users, page, per_page,
                                          'bp_api_v2.get_users')
    return jsonify(data)
Esempio n. 3
0
def get_users():
    name = request.args.get("name")
    users = FlicketUser.query
    if name:
        users = users.filter(FlicketUser.name.ilike("%{}%".format(name)))
    page = request.args.get("page", 1, type=int)
    per_page = min(
        request.args.get("per_page", app.config["posts_per_page"], type=int), 100
    )
    data = FlicketUser.to_collection_dict(users, page, per_page, "bp_api.get_users")
    return jsonify(data)
Esempio n. 4
0
def create_user(username, password, email=None, name=None, job_title=None, locale=None):
    password = hash_password(password)
    register = FlicketUser(username=username,
                           email=email,
                           name=name,
                           password=password,
                           job_title=job_title,
                           date_added=datetime.datetime.now(),
                           locale=locale)
    db.session.add(register)
    db.session.commit()
def import_users_from_json():

    # check if file exists
    if not os.path.isfile(json_user_file):
        print('Could not find json file "{}". Exiting ....'.format(json_user_file))
        exit()

    # read json file
    with open(json_user_file) as data_file:
        json_users = json.load(data_file)

    # check formatting of json file
    valid_json_fields = ["username", "name", "email", "password"]
    for user in json_users:
        if not all(f in user for f in valid_json_fields):
            print("json file not formatted correctly. Exiting.")
            exit()

    # add users to database.
    for user in json_users:

        # encode password to bytes
        password = str.encode(user["password"])

        # create json_user object
        json_user = JsonUser(user["username"], user["name"], user["email"], password)

        # check tht user doesn't already exist.
        existing_user = FlicketUser.query.filter_by(email=json_user.email)
        if existing_user.count() > 0:
            print(
                "User {} {} already exists in the database.".format(
                    json_user.name, json_user.email
                )
            )
            continue

        # add the user
        print(
            "Adding the user {} {} to the database.".format(
                json_user.name, json_user.email
            )
        )
        new_user = FlicketUser(
            username=json_user.username,
            name=json_user.name,
            email=json_user.email,
            password=json_user.password,
            date_added=datetime.datetime.now(),
        )
        db.session.add(new_user)
        db.session.commit()
Esempio n. 6
0
    def create_notifier():
        """ creates user for notifications """

        query = FlicketUser.query.filter_by(username=app.config['NOTIFICATION']['username'])
        if query.count() == 0:
            add_user = FlicketUser(username=app.config['NOTIFICATION']['username'],
                                   name=app.config['NOTIFICATION']['name'],
                                   password=hash_password(app.config['NOTIFICATION']['password']),
                                   email=app.config['NOTIFICATION']['email'],
                                   date_added=datetime.datetime.now())
            db.session.add(add_user)
            print("Notification user added.")
        else:
            print('Notification user already added.')
Esempio n. 7
0
def add_user():
    form = AddUserForm()
    if form.validate_on_submit():
        password = hash_password(form.password.data)
        register = FlicketUser(username=form.username.data,
                               email=form.email.data,
                               name=form.name.data,
                               password=password,
                               job_title=form.job_title.data,
                               date_added=datetime.datetime.now())
        db.session.add(register)
        db.session.commit()
        flash('You have successfully registered new user {}.'.format(
            form.username.data))
        return redirect(url_for('admin_bp.users'))
    return render_template('admin_user.html', title='Add User', form=form)
Esempio n. 8
0
    def create_admin(username, password, email, job_title, silent=False):
        """ creates flicket_admin user. """

        query = FlicketUser.query.filter_by(username=username)
        if query.count() == 0:
            add_user = FlicketUser(username=username,
                                   name=username,
                                   password=hash_password(password),
                                   email=email,
                                   job_title=job_title,
                                   date_added=datetime.datetime.now())
            db.session.add(add_user)

            if not silent:
                print('Admin user added.')
        else:
            print('Admin user is already added.')
Esempio n. 9
0
def create_notifier():
    """ creates user for notifications """

    query = FlicketUser.query.filter_by(
        username=app.config["NOTIFICATION"]["username"])
    if query.count() == 0:
        add_user = FlicketUser(
            username=app.config["NOTIFICATION"]["username"],
            name=app.config["NOTIFICATION"]["name"],
            password=hash_password(app.config["NOTIFICATION"]["password"]),
            email=app.config["NOTIFICATION"]["email"],
            date_added=datetime.datetime.now(),
        )
        db.session.add(add_user)
        print("Notification user added.")
    else:
        print("Notification user already added.")
Esempio n. 10
0
def before_request():
    set_flicket_config()
    g.user = current_user

    # reset the user token if the user is authenticated and token is expired.
    if g.user.is_authenticated and hasattr(g.user, "token"):
        if FlicketUser.check_token(g.user.token) is None:
            g.user.get_token()
            db.session.commit()

    # used in the page footer
    g.__version__ = __version__

    # page title
    application_title = FlicketConfig.query.first().application_title

    g.application_title = application_title
Esempio n. 11
0
def password_reset():
    form = PasswordResetForm()

    if form.validate_on_submit():
        new_password = FlicketUser.generate_password()
        hashed_password = hash_password(new_password)
        user = FlicketUser.query.filter_by(email=form.email.data).first()
        user.password = hashed_password
        db.session.commit()

        email = FlicketMail()
        email.password_reset(user, new_password)

        flash(gettext('Password reset. Please check your email for your new password'))
        return redirect(url_for('flicket_bp.login'))

    title = 'Password Reset'
    return render_template('password_reset.html', form=form, title=title)
Esempio n. 12
0
    def __init__(self,
                 username='******',
                 name='john doe',
                 password='******',
                 email='*****@*****.**'):
        self.username = username
        self.name = name
        self.password = password
        self.password_hash = hash_password(password=self.password)
        self.email = email
        self.password_hash = hash_password(password=self.password)
        self.date_added = datetime.datetime.now()

        self.user = FlicketUser(username=self.username,
                                name=self.name,
                                email=self.email,
                                password=self.password_hash,
                                date_added=self.date_added)
        db.session.add(self.user)
        db.session.commit()
Esempio n. 13
0
    def __init__(self,
                 username='******',
                 name='admin',
                 password='******',
                 email='*****@*****.**'):
        self.username = username
        self.name = name
        self.password = password
        self.password_hash = hash_password(password=self.password)
        self.email = email
        self.password_hash = hash_password(password=self.password)
        self.date_added = datetime.datetime.now()

        self.user = FlicketUser(username=self.username,
                                name=self.name,
                                email=self.email,
                                password=self.password_hash,
                                date_added=self.date_added)
        db.session.add(self.user)

        group = FlicketGroup(group_name='flicket_admin')
        db.session.add(group)
        group.users.append(self.user)
        db.session.commit()
Esempio n. 14
0
def verify_token(token):
    g.current_user = FlicketUser.check_token(token) if token else None
    return g.current_user is not None