Rag_SaaS_Sys_V4 / scripts /create_admin.py
GodRad's picture
Upload 116 files
53ed279 verified
Raw History Blame Contribute Delete
1.9 kB
import sys
import os
import bcrypt
import uuid
from datetime import datetime
# Add root to sys.path
sys.path.append(os.getcwd())
from app.models.database import SessionLocal
from app.models.orm import AdminUserModel
def hash_password(password: str) -> str:
"""Hash a password using bcrypt"""
return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
def create_admin(username, email, password):
db = SessionLocal()
try:
# Check if exists
existing = db.query(AdminUserModel).filter(
(AdminUserModel.username == username) | (AdminUserModel.email == email)
).first()
if existing:
print(f"Error: Admin with username '{username}' or email '{email}' already exists.")
return
admin_id = str(uuid.uuid4())
admin_user = AdminUserModel(
id=admin_id,
username=username,
email=email,
hashed_password=hash_password(password),
role="admin",
created_at=datetime.utcnow(),
is_active=True
)
db.add(admin_user)
db.commit()
print(f"Successfully created admin user: {username}")
print(f"Admin ID: {admin_id}")
except Exception as e:
print(f"An error occurred: {e}")
db.rollback()
finally:
db.close()
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Create initial admin user")
parser.add_argument("--username", required=True, help="Admin username")
parser.add_argument("--email", required=True, help="Admin email")
parser.add_argument("--password", required=True, help="Admin password")
args = parser.parse_args()
create_admin(args.username, args.email, args.password)