File size: 2,900 Bytes
6eebf8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python3
"""
Script to create a default admin user in the database
Run this once after setting up the database
"""

import sys
import os
import asyncio
from datetime import datetime

# Add the parent directory to Python path for imports
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from app.core.firebase_config import FirebaseConfig
from app.models.user import User
from app.models.common import UserRole
from app.services.auth.auth_service import AuthService
from firebase_admin import auth

async def create_admin_user():
    """Create a default admin user"""
    
    # Default admin credentials
    ADMIN_EMAIL = "admin@secura.com"
    ADMIN_PASSWORD = "SecuraAdmin123!"
    ADMIN_NAME = "System Administrator"
    
    try:
        print("Creating default admin user...")
        
        # Initialize Firebase (if not already initialized)
        try:
            FirebaseConfig.initialize()
        except:
            pass  # Already initialized
        
        # Create Firebase user
        try:
            firebase_user = auth.create_user(
                email=ADMIN_EMAIL,
                password=ADMIN_PASSWORD,
                display_name=ADMIN_NAME,
                email_verified=True
            )
            print(f"Firebase user created with UID: {firebase_user.uid}")
        except auth.EmailAlreadyExistsError:
            # If user already exists, get existing user
            firebase_user = auth.get_user_by_email(ADMIN_EMAIL)
            print(f"Firebase user already exists with UID: {firebase_user.uid}")
        
        # Create user profile in Firestore
        auth_service = AuthService()
        
        # Check if user profile already exists
        existing_user = await auth_service.get_user_profile(firebase_user.uid)
        if existing_user:
            print("Admin user profile already exists in database")
            print(f"Admin UID: {existing_user.uid}")
            print(f"Admin Email: {existing_user.email}")
            print(f"Admin Role: {existing_user.role}")
            return
        
        # Create new admin profile
        admin_user = User(
            uid=firebase_user.uid,
            email=ADMIN_EMAIL,
            full_name=ADMIN_NAME,
            phone_number=None,
            role=UserRole.ADMIN,
            is_active=True
        )
        
        await auth_service.create_user_profile(admin_user)
        
        print("SUCCESS: Default admin user created successfully!")
        print(f"Email: {ADMIN_EMAIL}")
        print(f"Password: {ADMIN_PASSWORD}")
        print(f"UID: {firebase_user.uid}")
        print()
        print("IMPORTANT: Change the default password after first login!")
        
    except Exception as e:
        print(f"ERROR creating admin user: {str(e)}")
        sys.exit(1)

if __name__ == "__main__":
    asyncio.run(create_admin_user())