from flask import Flask, render_template, request, redirect, url_for, make_response, abort, jsonify import requests app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key_here' # API URL API_URL = 'http://localhost:5023' # Routes @app.route('/') def index(): return render_template('index.html') @app.route('/modal') def modal(): id = request.args.get('id') if id == "scratch": return render_template('scratch_modal.html') @app.route('/login/user', methods=['GET', 'POST']) def login_user(): if request.method == 'POST': data = request.form response = requests.post(f'{API_URL}/api/user/login', json={'email': data['email'], 'password': data['password']}) if response.status_code == 200: session_token = response.json()['session_token'] resp = make_response("Login Successful!") resp.set_cookie('session_token', session_token, secure=True, httponly=True) return resp else: abort(400) return render_template('login_user.html') @app.route('/login/developer', methods=['GET', 'POST']) def login_developer(): if request.method == 'POST': data = request.form response = requests.post(f'{API_URL}/api/developer/login', json={'email': data['email'], 'password': data['password']}) if response.status_code == 200: session_token = response.json()['session_token'] resp = make_response("Login Successful!") resp.set_cookie('devsession_token', session_token, secure=True, httponly=True) return resp else: return render_template('login_developer.html', error='Invalid email or password') return render_template('login_developer.html') @app.route('/register/user', methods=['GET', 'POST']) def register_user(): if request.method == 'POST': data = request.form response = requests.post(f'{API_URL}/api/user/register', json={'username': data['username'], 'email': data['email'], 'password': data['password'], 'game_password': data['game_password']}) if response.status_code == 201: return render_template('user_registered.html', message=response.json()['message']) else: return render_template('register_user.html', error='Failed to register user') return render_template('register_user.html') @app.route('/register/developer', methods=['GET', 'POST']) def register_developer(): if request.method == 'POST': data = request.form response = requests.post(f'{API_URL}/api/developer/register', json={'email': data['email'], 'password': data['password']}) if response.status_code == 201: return render_template('developer_registered.html', message=response.json()['message']) else: return render_template('register_developer.html', error='Failed to register developer') return render_template('register_developer.html') @app.route('/user/dashboard') def user_dashboard(): session_token = request.cookies.get('session_token') if not session_token: return redirect(url_for('login_user')) response = requests.post(f'{API_URL}/api/user/stats', json={'token': f'{session_token}'}) if response.status_code == 200: user_stats = response.json() games_played_count = len(user_stats['games_played']) return render_template('user_dashboard.html', user_stats=user_stats, games_played_count=games_played_count) else: return redirect(url_for('login_user')) @app.route('/developer/dashboard') def developer_dashboard(): session_token = request.cookies.get('devsession_token') if not session_token: return redirect(url_for('login_developer')) count = requests.post(f'{API_URL}/api/developerstats/games', json={'token': session_token}) if count.status_code == 200: return render_template('developer_dashboard.html', session_token=session_token, count=count.json()['len']) else: return redirect('login_developer') @app.route('/developer/dashboard/games') def developer_dashboard_games(): session_token = request.cookies.get('devsession_token') if not session_token: return redirect(url_for('login_developer')) count = requests.post(f'{API_URL}/api/developerstats/games', json={'token': session_token}) if count.status_code == 200: return render_template('developer_dashboard_game.html', session_token=session_token, count=count.json()['len'], games=count.json()['games']) else: return redirect('login_developer') @app.route('/developer/register/game', methods=['GET', 'POST']) def register_game(): session_token = request.cookies.get('devsession_token') if not session_token: return redirect(url_for('login_developer')) if request.method == 'POST': data = request.form response = requests.post(f'{API_URL}/api/game/register', json={'session_token': session_token, 'name': data['name']}) if response.status_code == 201: return "OK" else: return response.json()['error'], 400 return render_template('register_game.html') @app.route('/developer/delete/game', methods=['GET']) def delete_game(): gameugi = request.args.get('ugi') gamename = request.args.get('name') session_token = request.cookies.get('devsession_token') if not session_token: return redirect(url_for('login_developer')) if not gameugi or not gamename: return jsonify({"error": "The ugi or the name parameter was not found"}) return render_template('developer_dashboard_delete_game.html', name=gamename, ugi=gameugi) @app.route('/developer/dashboard/games/delete/confirmed', methods=['POST']) def delete_actually_do_it(): session_token = request.cookies.get('devsession_token') ugi = request.args.get('ugi') if not session_token: return redirect(url_for('login_developer')) if not ugi: return jsonify({"error": "Ugi parameter must be provided."}) resp = requests.post(f'{API_URL}/api/game/delete', json={'session_token': session_token, 'ugi': ugi}) if resp.status_code == 200: return "OK" # Other routes... #if __name__ == '__main__': #app.run(debug=True, port=5001)