Added new pages, and added user approval and login to external services (Still need to add service tokens)

This commit is contained in:
2025-12-23 22:06:29 +00:00
parent 5fef4ac7c8
commit 43736d68bb
11 changed files with 2202 additions and 8 deletions

189
db.py
View File

@@ -95,6 +95,36 @@ def getGroupByName(name, dbuser, dbpass, dbhost, dbname):
print(f"Error retrieving group: {e}")
raise
def getServiceById(id, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(
host=dbhost,
user=dbuser,
password=dbpass,
database=dbname
)
cur = conn.cursor()
print(id)
cur.execute("SELECT name, permissions, creation_date FROM services WHERE id = %s", (id,))
group_record = cur.fetchone()
cur.close()
conn.close()
if group_record:
return {
"name": group_record[0],
"permissions": group_record[1],
"creation_date": group_record[2]
}
else:
return None
except Exception as e:
print(f"Error retrieving group: {e}")
raise
def createUser(name, username, email, password, group, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(
@@ -124,6 +154,165 @@ def createUser(name, username, email, password, group, dbuser, dbpass, dbhost, d
print(f"Error creating user: {e}")
raise
def createRequestToken(user_id, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(
host=dbhost,
user=dbuser,
password=dbpass,
database=dbname
)
cur = conn.cursor()
token_id = secrets.token_urlsafe(32)
cur.execute("""
INSERT INTO requestTokens (id, owner_id)
VALUES (%s, %s) RETURNING id, creation_date, expiration_date
""", (token_id, user_id))
token_data = cur.fetchone()
conn.commit()
cur.close()
conn.close()
return token_data[0]
except Exception as e:
print(f"Error creating token: {e}")
raise
def checkRequestToken(token_id, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(
host=dbhost,
user=dbuser,
password=dbpass,
database=dbname
)
cur = conn.cursor()
cur.execute("""
SELECT owner_id FROM requestTokens
WHERE id = %s AND expiration_date > CURRENT_TIMESTAMP
""", (token_id,))
token_record = cur.fetchone()
cur.close()
conn.close()
if token_record:
cur.execute("DELETE FROM requestTokens WHERE id = %s", (token_id,))
conn.commit()
return token_record[0]
else:
return None
except Exception as e:
print(f"Error verifying token: {e}")
return None
def getUserServiceData(user_id, service_id, record_key, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(
host=dbhost,
user=dbuser,
password=dbpass,
database=dbname
)
cur = conn.cursor()
cur.execute("""
SELECT permissions FROM services
WHERE id = %s
""", (service_id,))
service_perms = cur.fetchone()
print(service_perms)
cur.execute("""
SELECT value FROM userData
WHERE property = %s AND user_id = %s AND service_id = %s
""", (record_key, user_id, service_id))
service_record = cur.fetchone()
cur.close()
conn.close()
if service_record:
return service_record[0]
else:
return None
except Exception as e:
print(f"Error retrieving user service data: {e}")
raise
def createUserServiceData(key, value, service_id, user_id, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(
host=dbhost,
user=dbuser,
password=dbpass,
database=dbname
)
cur = conn.cursor()
cur.execute("""
INSERT INTO userData (user_id, service_id, property, value)
VALUES (%s, %s) RETURNING id
""", (user_id, service_id, key, value))
row = cur.fetchone()
conn.commit()
cur.close()
conn.close()
return "Success"
except Exception as e:
print(f"Error creating service: {e}")
raise
def createService(name, permissions, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(
host=dbhost,
user=dbuser,
password=dbpass,
database=dbname
)
cur = conn.cursor()
cur.execute("""
INSERT INTO services (name, permissions)
VALUES (%s, %s) RETURNING id, key
""", (name, permissions))
row = cur.fetchone()
serviceData = {
"id": row[0],
"key": row[1]
}
conn.commit()
cur.close()
conn.close()
return serviceData
except Exception as e:
print(f"Error creating service: {e}")
raise
def createToken(user_id, dbuser, dbpass, dbhost, dbname):
try:
conn = psycopg2.connect(