Added login

This commit is contained in:
2025-12-18 15:16:15 +00:00
parent 0c9c1d561f
commit 5fef4ac7c8
5 changed files with 924 additions and 184 deletions

74
main.py Normal file
View File

@@ -0,0 +1,74 @@
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)