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)
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)
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)
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)
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)
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))
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)))