74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
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) |