39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
"""
|
|
Create or reset the admin user.
|
|
|
|
Usage:
|
|
.venv/bin/python scripts/create_admin.py <username> <password>
|
|
|
|
Example:
|
|
.venv/bin/python scripts/create_admin.py admin geheim123
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from app.core.database import SessionLocal, engine, Base
|
|
from app.modules.auth.models import User # noqa: F401 — registers table
|
|
from app.modules.auth.service import get_user, hash_password
|
|
|
|
|
|
def create_admin(username: str, password: str) -> None:
|
|
Base.metadata.create_all(bind=engine)
|
|
with SessionLocal() as db:
|
|
user = get_user(db, username)
|
|
if user is None:
|
|
user = User(username=username, full_name="Administrator")
|
|
db.add(user)
|
|
user.pw_hash = hash_password(password)
|
|
user.is_admin = True
|
|
user.is_active = True
|
|
db.commit()
|
|
print(f"Admin user '{username}' created/updated.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) != 3:
|
|
print(__doc__)
|
|
sys.exit(1)
|
|
create_admin(sys.argv[1], sys.argv[2])
|