def register():
    current_app.logger.debug('Inside register route of users blueprint')
    user_details = Users.get_current_user()
    error_message = None
    registerform = RegisterForm()
    if registerform.validate_on_submit():
        username = registerform.username.data
        password = registerform.password.data
        existing_user = Users.get_by_name(name=username)
        if not existing_user:
            hashed_password = generate_password_hash(password, method='sha256')
            new_user = Users(name=username,
                             password=hashed_password,
                             expert=False,
                             admin=False)
            new_user.save_to_db()
            session['username'] = username
            if username == 'admin':
                admin_user = Users.get_by_name(name='admin')
                admin_user.admin = True
                admin_user.save_to_db()
            current_app.logger.debug(
                'Redirecting to index route of questions blueprint')
            return redirect(url_for('questions.index'))
        else:
            current_app.logger.error('User already exists')
            error_message = "User already exists!"

    return render_template('register.html',
                           user=user_details,
                           error=error_message,
                           form=registerform)
def login():
    current_app.logger.debug('Inside login route of users blueprint')
    user_details = Users.get_current_user()
    user_error_message = None
    pass_error_message = None
    loginform = LoginForm()

    if loginform.validate_on_submit():
        username = loginform.username.data
        password = loginform.password.data
        hashed_password = generate_password_hash(password, method='sha256')
        user_result = Users.get_by_name(name=username)
        if user_result:
            returned_password = user_result.password
            if check_password_hash(returned_password, password):
                session['username'] = user_result.name
                return redirect(url_for('questions.index'))
            else:
                current_app.logger.error('passwords are not matching')
                pass_error_message = "Passwords don't match"
        else:
            current_app.logger.error('User does not exist')
            user_error_message = "User does not exist!"

    return render_template('login.html',
                           user=user_details,
                           user_error=user_error_message,
                           pass_error=pass_error_message,
                           form=loginform)