Added create user function.

This commit is contained in:
2025-04-05 23:01:27 +03:00
parent 1798d559cf
commit 91459ddabe
2 changed files with 56 additions and 26 deletions

View File

@@ -1,6 +1,6 @@
# add_user.py
import asyncio, logging, pymysql
import asyncio, logging, pymysql, re
import secrets
from sqlalchemy.future import select
from data.db import engine, SessionLocal
@@ -72,17 +72,23 @@ async def db_startup():
def create_secret():
return secrets.token_hex(32)
async def create_user_script_async():
async def create_user_script_async(username:str|None=None, role_input:str|None=None):
username = username.strip() if username else input("Enter username: ").strip()
if not username.isalnum():
print("> Invalid username. Please use alphanumerical characters only.")
return
if not re.match("[a-zA-Z]{1}[a-zA-Z0-0-9]{,15}", username):
print("> Invalid username. Please use english characters and numbers only.")
return
role_input = role_input.strip().lower() if role_input else input("Enter role (admin/user): ").strip().lower()
print('\n')
if role_input not in UserRole._value2member_map_:
print("> Invalid role. Please enter 'admin' or 'user'.")
return
role = UserRole(role_input)
async with SessionLocal() as session:
username = input("Enter username: ").strip()
role_input = input("Enter role (admin/user): ").strip().lower()
print('\n')
if role_input not in UserRole._value2member_map_:
print("> Invalid role. Please enter 'admin' or 'user'.")
return
role = UserRole(role_input)
# Check if username already exists
result = await session.execute(select(User).filter_by(username=username))
@@ -102,5 +108,5 @@ async def create_user_script_async():
print(f"> User '{username}' with role '{role.value}' created successfully.")
print(f"> API Key: {api_key}")
def create_user_script_sync():
asyncio.run(create_user_script_async())
def create_user_script_sync(username:str|None=None, role_input:str|None=None):
asyncio.run(create_user_script_async(username=username, role_input=role_input))