File size: 5,167 Bytes
1d647cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/usr/bin/env python3
"""
Script to create security team users in the database
Run this to add security team members with proper credentials
"""

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

# Security Team Members Configuration
SECURITY_TEAM_MEMBERS = [
    {
        "email": "security.lead@secura.com",
        "password": "SecuraSecLead123!",
        "full_name": "Security Team Lead",
        "phone_number": "+1-555-0101"
    },
    {
        "email": "analyst1@secura.com", 
        "password": "SecuraAnalyst123!",
        "full_name": "Security Analyst 1",
        "phone_number": "+1-555-0102"
    },
    {
        "email": "analyst2@secura.com",
        "password": "SecuraAnalyst234!",
        "full_name": "Security Analyst 2", 
        "phone_number": "+1-555-0103"
    },
    {
        "email": "incident.response@secura.com",
        "password": "SecuraIncident123!",
        "full_name": "Incident Response Specialist",
        "phone_number": "+1-555-0104"
    }
]

async def create_security_team_user(user_data):
    """Create a single security team user"""
    
    email = user_data["email"]
    password = user_data["password"]
    full_name = user_data["full_name"]
    phone_number = user_data["phone_number"]
    
    try:
        print(f"Creating security team user: {email}")
        
        # Create Firebase user
        try:
            firebase_user = auth.create_user(
                email=email,
                password=password,
                display_name=full_name,
                email_verified=True
            )
            print(f"  [SUCCESS] 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(email)
            print(f"  [INFO] 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(f"  [INFO] User profile already exists in database")
            return existing_user
        
        # Create new security team member profile
        security_user = User(
            uid=firebase_user.uid,
            email=email,
            full_name=full_name,
            phone_number=phone_number,
            role=UserRole.SECURITY_TEAM,
            is_active=True
        )
        
        await auth_service.create_user_profile(security_user)
        print(f"  [SUCCESS] Security team user profile created successfully")
        
        return security_user
        
    except Exception as e:
        print(f"  [ERROR] creating security team user {email}: {str(e)}")
        return None

async def create_all_security_team_users():
    """Create all security team users"""
    
    try:
        print("Creating security team users...")
        print("=" * 50)
        
        # Initialize Firebase (if not already initialized)
        try:
            FirebaseConfig.initialize()
        except:
            pass  # Already initialized
        
        created_users = []
        
        # Create each security team member
        for user_data in SECURITY_TEAM_MEMBERS:
            user = await create_security_team_user(user_data)
            if user:
                created_users.append((user_data, user))
            print()
        
        # Print summary
        print("=" * 50)
        print("SECURITY TEAM CREDENTIALS SUMMARY")
        print("=" * 50)
        
        if created_users:
            print("Successfully created/verified security team users:")
            print()
            
            for user_data, user in created_users:
                print(f"Email: {user_data['email']}")
                print(f"Password: {user_data['password']}")
                print(f"Name: {user_data['full_name']}")
                print(f"Phone: {user_data['phone_number']}")
                print(f"Role: {user.role}")
                print(f"UID: {user.uid}")
                print("-" * 30)
            
            print()
            print("IMPORTANT SECURITY NOTES:")
            print("• Change default passwords after first login")
            print("• Ensure all team members enable 2FA")
            print("• These credentials should be shared securely")
            print("• Monitor login activities for these accounts")
        else:
            print("No users were created successfully.")
        
    except Exception as e:
        print(f"ERROR in security team creation process: {str(e)}")
        sys.exit(1)

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