105 lines
2.6 KiB
Python
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
|
|
|