Files
Outpost/createuser.py
2025-11-09 21:12:43 +00:00

105 lines
2.6 KiB
Python

import psycopg2
from psycopg2 import sql
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
from dotenv import load_dotenv
from os import getenv
from argon2 import PasswordHasher
load_dotenv()
DB_HOST = getenv("DB_HOST")+":"+getenv("DB_PORT")
DB_USER = getenv("DB_USER")
DB_PASSWORD = getenv("DB_PASSWORD")
DB_NAME = "outpost"
class newUser:
username = ""
name = ""
email = ""
password = ""
def checkIfAvailible(self):
try:
conn = psycopg2.connect(
host=DB_HOST,
user=DB_USER,
password=DB_PASSWORD,
database=DB_NAME
)
cur = conn.cursor()
cur.execute("""
SELECT * FROM users
WHERE username = %s
""", [self.username])
if len(cur.fetchall()) > 0:
return False
else:
return True
except:
return False
def createUserTable(self):
try:
conn = psycopg2.connect(
host=DB_HOST,
user=DB_USER,
password=DB_PASSWORD,
database=DB_NAME
)
cur = conn.cursor()
table_name = f""""userpermissions".{id.lower().replace(' ', '_').replace('-', '_').replace('.', '_')}"""
cur.execute("""
CREATE TABLE IF NOT EXISTS %s (
key VARCHAR(255) PRIMARY KEY,
value TEXT
)
""", (table_name))
conn.commit()
cur.close()
conn.close()
except Exception as e:
print(f"Error creating user table: {e}")
raise
def createUser(self):
try:
ph = PasswordHasher()
conn = psycopg2.connect(
host=DB_HOST,
user=DB_USER,
password=DB_PASSWORD,
database=DB_NAME
)
cur = conn.cursor()
cur.execute("""
INSERT INTO users (
name,
username,
email,
password_hash
) values (
%s,
%s,
%s,
%s
);
""", (
self.name,
self.username,
self.email,
ph.hash(self.password)
))
user = cur.fetchone()
conn.commit()
cur.close()
conn.close()
return user
except:
return False