152 lines
6.1 KiB
Python
152 lines
6.1 KiB
Python
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)
|