mirror of
https://github.com/complexcaresolutions/dak.c2s.git
synced 2026-03-17 20:43:41 +00:00
Add audit_service for compliance logging, admin endpoints (user CRUD, invitation management, audit log), notification endpoints (list, mark read), and interactive create_admin script. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
"""Create initial admin user interactively."""
|
|
|
|
import os
|
|
import sys
|
|
|
|
# Allow imports from the backend package when running this script directly.
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from getpass import getpass
|
|
|
|
from app.core.security import hash_password
|
|
from app.database import SessionLocal
|
|
from app.models.user import User
|
|
|
|
|
|
def main() -> None:
|
|
db = SessionLocal()
|
|
try:
|
|
username = input("Admin username: ").strip()
|
|
if not username:
|
|
print("Username cannot be empty.")
|
|
sys.exit(1)
|
|
|
|
email = input("Admin email: ").strip()
|
|
if not email:
|
|
print("Email cannot be empty.")
|
|
sys.exit(1)
|
|
|
|
password = getpass("Admin password: ")
|
|
confirm = getpass("Confirm password: ")
|
|
|
|
if password != confirm:
|
|
print("Passwords don't match!")
|
|
sys.exit(1)
|
|
|
|
if len(password) < 8:
|
|
print("Password must be at least 8 characters.")
|
|
sys.exit(1)
|
|
|
|
existing = (
|
|
db.query(User)
|
|
.filter((User.email == email) | (User.username == username))
|
|
.first()
|
|
)
|
|
if existing:
|
|
print(f"User already exists: {existing.username} ({existing.email})")
|
|
sys.exit(1)
|
|
|
|
user = User(
|
|
username=username,
|
|
email=email,
|
|
password_hash=hash_password(password),
|
|
role="admin",
|
|
)
|
|
db.add(user)
|
|
db.commit()
|
|
print(f"Admin user created: {username} ({email})")
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|