added basic functionality
This commit is contained in:
@@ -30,14 +30,29 @@ from .utils import (
|
||||
get_token,
|
||||
get_unlocked_decks,
|
||||
is_deck_unlocked,
|
||||
retrieve_token,
|
||||
serialize_token,
|
||||
update_token,
|
||||
)
|
||||
|
||||
|
||||
main = Blueprint('main', __name__)
|
||||
slidev_deck_pattern = re.compile(r"^\/slides\/[^\/]+\/\d*(?:\?.*)?$")
|
||||
slidev_all_pattern = re.compile(r"^\/slides\/[^\/]+(?:\/presenter)?\/\d+(?:\?.*)?$")
|
||||
|
||||
|
||||
@main.before_request
|
||||
def ensure_cookie():
|
||||
token = get_token()
|
||||
if token:
|
||||
return
|
||||
else:
|
||||
token = generate_token()
|
||||
|
||||
resp = make_response(redirect(request.url))
|
||||
resp.set_cookie('access_token', serialize_token(token), httponly=True)
|
||||
return resp
|
||||
|
||||
@main.after_request
|
||||
def inject_confused_button(response):
|
||||
if True:
|
||||
@@ -81,15 +96,15 @@ def inject_confused_button(response):
|
||||
response.set_data(body)
|
||||
return response
|
||||
|
||||
|
||||
|
||||
@main.route('/')
|
||||
def index():
|
||||
token = get_token()
|
||||
if not token:
|
||||
token = generate_token()
|
||||
resp = make_response(render_template('index.html', active_banner=get_active_banner(), decks=get_unlocked_decks(token), user_name=token.name))
|
||||
resp.set_cookie('access_token', serialize_token(token), httponly=True)
|
||||
return resp
|
||||
abort(500)
|
||||
else:
|
||||
return render_template('index.html', active_banner=get_active_banner(), decks=get_unlocked_decks(token), user_name=token.name)
|
||||
|
||||
|
||||
@main.route('/login', methods=['POST', 'GET'])
|
||||
def login():
|
||||
@@ -127,12 +142,34 @@ def access():
|
||||
return redirect('/')
|
||||
return render_template('index.html', error="Invalid password.", decks=get_unlocked_decks(token))
|
||||
|
||||
@main.route('/confused', methods=['POST'])
|
||||
|
||||
@main.route('/access/<access_code>', methods=['GET'])
|
||||
def access_link(access_code: str):
|
||||
password = db.session.execute(db.select(Password).where(Password.value == access_code)).scalar()
|
||||
assert isinstance(password, Password|None)
|
||||
token = get_token()
|
||||
if password is not None and not password.is_expired():
|
||||
update_token(password.decks)
|
||||
return redirect('/')
|
||||
return render_template('index.html', error="Invalid password.", decks=get_unlocked_decks(token))
|
||||
|
||||
|
||||
|
||||
@main.route('/confused', methods=['POST'])
|
||||
def confused():
|
||||
resp = jsonify(success=True)
|
||||
return resp
|
||||
|
||||
@main.route('/retrieve-token', methods=['POST'])
|
||||
def set_username_token():
|
||||
new_username : str = request.form.get("user_name", "").strip()
|
||||
resp = make_response(redirect('/'))
|
||||
if new_username:
|
||||
token = retrieve_token(new_username)
|
||||
if token:
|
||||
resp.set_cookie('access_token', serialize_token(token), httponly=True)
|
||||
return resp
|
||||
|
||||
|
||||
@main.route('/slides/<deck>/')
|
||||
@main.route('/slides/<deck>/<path:path>')
|
||||
|
||||
Reference in New Issue
Block a user