import flask from flask import render_template, jsonify, request, redirect, Response import initdb import db from dotenv import load_dotenv from os import getenv load_dotenv() DB_HOST = getenv("DB_HOST") DB_USER = getenv("DB_USER") DB_PASSWORD = getenv("DB_PASSWORD") DB_NAME = getenv("DB_NAME") appName = "Outpost" app = flask.Flask(__name__) @app.route('/', methods = ['GET']) def index(): token = request.cookies.get('auth_token', 'none') userId = db.verifyToken(token, DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) if (userId == None): return render_template('login.html', appName=appName) else: return render_template("home.html", pageTitle="Home | " + appName) @app.route('/api/login', methods = ['POST']) def handleLogin(): username = request.json['username'].lower() password = request.json['password'] newToken = db.loginUser(username, password, DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) if newToken == None: print("Invalid login attempt") return jsonify("Invalid username or password") return jsonify(newToken) @app.route('/signup', methods = ['GET']) def signup(): token = request.cookies.get('auth_token', 'none') userId = db.verifyToken(token, DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) if (userId == None): return render_template('signup.html', appName=appName) else: return render_template("home.html", pageTitle="Home | " + appName) @app.route('/logout', methods = ['GET']) def logout(): token = request.cookies.get('auth_token', 'none') try: token = request.headers['remove-token'] except: pass db.removeToken(token, DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) return render_template('logout.html', appName=appName) @app.route('/api/signup', methods = ['POST']) def handleSignup(): try: username = request.json['username'].lower() email = request.json['email'].lower() password = request.json['password'] displayName = request.json['displayname'] db.createUser(displayName, username, email, password, DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) except: return jsonify("An error occured") if __name__ == '__main__': initdb.createDatabase(DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) initdb.createTables(DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) if not db.getGroupByName("root", DB_USER, DB_PASSWORD, DB_HOST, DB_NAME): db.createGroup("root", None, DB_USER, DB_PASSWORD, DB_HOST, DB_NAME) app.run(debug=True)