Added new pages, and added user approval and login to external services (Still need to add service tokens)
This commit is contained in:
189
db.py
189
db.py
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user