Jun 26 - Implement registration function for user to register account
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user