Jun 26 - Implement registration function for user to register account

This commit is contained in:
2026-06-26 13:40:34 -04:00
parent a47335110c
commit adb39a4aa8
7 changed files with 210 additions and 5 deletions
+29
View File
@@ -267,6 +267,35 @@ def update_user_profile(user_id: int, full_name: str, email: str):
conn.close()
def register_user(username: str, password: str, full_name: str = "", email: str = None):
"""Self-service registration. Role is always 'user'. Raises ValueError on duplicates."""
conn = None
try:
conn = get_connection()
cur = conn.cursor(dictionary=True)
cur.execute("SELECT id FROM users WHERE username=%s", (username,))
if cur.fetchone():
raise ValueError("Username is already taken.")
if email:
cur.execute("SELECT id FROM users WHERE email=%s", (email,))
if cur.fetchone():
raise ValueError("An account with that email address already exists.")
cur = conn.cursor()
cur.execute(
"INSERT INTO users (username, password, role, full_name, email) VALUES (%s,%s,'user',%s,%s)",
(username, _hash_password(password), full_name or username, email or None),
)
conn.commit()
new_id = cur.lastrowid
cur.close()
log_action(None, "REGISTER", "users", new_id,
f"New user self-registered: '{username}'.")
return new_id
finally:
if conn:
conn.close()
def create_user(admin_id, username, password, role, full_name, email=None):
conn = None
try: