Beispiel #1
0
def killmessage(message_id):
    """Mark a message as killed, then display the next message."""
    user_info = obtain_user_info()
    user_id = user_info.user_id
    kill_message(conn, user_id=user_id, message_id=message_id)
    recursive_kill(conn, user_id)
    return show_next(conn, user_id, message_id)
Beispiel #2
0
def login(conn, name, password, old_user_id=None):
    """Attempt to log in a user using a name and password. If it fails return false. If it succeeds, return an Mdf0User.
       Merge in a temporary user_id if present."""
    user_id = check_password(conn, name, password)
    if not user_id:
        return False
    if old_user_id:
        merge_user(conn, old_user_id=old_user_id, new_user_id = user_id)
        delete_user(conn, old_user_id)
    recursive_kill(conn, user_id=user_id)
    return get_user_info(conn, user_id)
Beispiel #3
0
def create_temp_user(conn):
    """Create a temporary guest user. The temp user can view and mark things as read and can kill but cannot post (or log in)
        Returns the Mdf0User."""
    user_name = uuid4()
    cur = conn.cursor()
    query = "INSERT INTO User (name, password, temp, verified, created, last_access) values (%s, 'LOL', 1, 0, NOW(), NOW())"
    cur.execute(query, (user_name,))
    user_id = conn.insert_id()
    conn.commit()
    recursive_kill(conn, user_id)
    return get_user_info(conn, user_id)
Beispiel #4
0
def register(conn, name, password, email, old_user_id=None):
    """Create a new user. Merge in the old user if he exists. Returns an MDF0User object."""
    cur = conn.cursor()
    hashed = bcrypt.hashpw(password.encode('utf8'), bcrypt.gensalt())
    query = "INSERT INTO User (name, password, email, temp, verified, created, last_access) values (%s, %s, %s, 0, 1, NOW(), NOW())"
    cur.execute(query, (name, hashed, email))
    user_id = conn.insert_id()
    conn.commit()
    if old_user_id:
        merge_user(conn, old_user_id, user_id)
        delete_user(conn, old_user_id)
    recursive_kill(conn, user_id=user_id)
    return get_user_info(conn, user_id)
Beispiel #5
0
def killuser():
    """Mark a user as killed, then display the next message."""
    user_info = obtain_user_info()
    message_id = request.args.get('message')
    target_id = request.args.get('user')
    try:
        message_id = int(message_id)
        target_id = int(target_id)
    except Exception:
        return redirect('/oops')

    kill_user(conn, user_info.user_id, target_id)
    recursive_kill(conn, user_info.user_id)
    return show_next(conn, user_info.user_id, message_id)
Beispiel #6
0
def process_login_form():
    old_user_id = session.get('user_id')
    username = request.form.get('username', '')
    user_info = login(conn,
                      request.form['username'],
                      request.form['password'],
                      old_user_id=old_user_id)
    if user_info:
        session['user_id'] = user_info.user_id
        recursive_kill(conn, user_info.user_id)
        return redirect('/topics')
    else:
        return render_template('login.html',
                               message='lolNope!',
                               username=escape(username))
Beispiel #7
0
    if args.restore:
        with open('./sql/schema.sql', 'r') as schema:
            subprocess.run([
                'mysql', '-h', sql_config.host, '-u', sql_config.user,
                '-p{}'.format(sql_config.password), sql_config.database
            ],
                           stdin=schema)
        with open('./sql/test/sample1.sql', 'r') as sample_data:
            subprocess.run([
                'mysql', '-h', sql_config.host, '-u', sql_config.user,
                '-p{}'.format(sql_config.password), sql_config.database
            ],
                           stdin=sample_data)
        args.diddle = True
        args.sync = True
        verify_all(conn)

    if args.stats:
        recursive_kill(conn, args.user)
        get_topic_stats(conn, args.user)
    if args.next:
        print(get_next_message_id(conn, args.user, args.message))
    if args.seen:
        set_seen(conn, user_id=args.user, message_id=args.message)
    if args.sync:
        sync_seen(conn)
    if args.diddle:
        diddle_message_times(conn)
    if args.topic:
        print(repr(topic_tree(conn, user_id=args.user, topic_id=args.topic)))