From c92291668f0c9537a2cd2f02911b838d37f7300d Mon Sep 17 00:00:00 2001 From: mm Date: Sat, 18 Mar 2023 22:54:19 +0000 Subject: [PATCH] auth --- app/routes.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 app/routes.py diff --git a/app/routes.py b/app/routes.py new file mode 100644 index 0000000..848ecb1 --- /dev/null +++ b/app/routes.py @@ -0,0 +1,68 @@ +from flask import request, jsonify, redirect, url_for, render_template +from flask_login import LoginManager, login_user, logout_user, login_required, current_user +from app import app, db +from app.models import User + +login_manager = LoginManager() +login_manager.init_app(app) +login_manager.login_view = 'login' + +@login_manager.user_loader +def load_user(user_id): + return User.query.get(int(user_id)) + +@app.route('/api', methods=['POST']) +@login_required +def process_request(): + image = request.files.get('image') + text = request.form.get('text') + blocks = request.form.getlist('blocks') + + # Process image, text, and blocks as needed + + return jsonify(success=True) + +@app.route('/signup', methods=['GET', 'POST']) +def signup(): + if current_user.is_authenticated: + return redirect(url_for('process_request')) + + if request.method == 'POST': + username = request.form['username'] + password = request.form['password'] + user = User.query.filter_by(username=username).first() + + if user is None: + new_user = User(username=username) + new_user.set_password(password) + db.session.add(new_user) + db.session.commit() + return redirect(url_for('login')) + else: + return "User already exists" + + return render_template('signup.html') + +@app.route('/login', methods=['GET', 'POST']) +def login(): + if current_user.is_authenticated: + return redirect(url_for('process_request')) + + if request.method == 'POST': + username = request.form['username'] + password = request.form['password'] + user = User.query.filter_by(username=username).first() + + if user and user.check_password(password): + login_user(user) + return redirect(url_for('process_request')) + else: + return "Invalid username or password" + + return render_template('login.html') + +@app.route('/logout') +@login_required +def logout(): + logout_user() + return redirect(url_for('login'))