91 lines
3.0 KiB
Python
Executable File
91 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Generate Child Auth Files Script
|
|
|
|
Creates auth.json files for each child tenant with appropriate users.
|
|
"""
|
|
|
|
import json
|
|
import os
|
|
from pathlib import Path
|
|
from datetime import datetime, timedelta
|
|
import uuid
|
|
|
|
def generate_child_auth_file(tenant_id: str, tenant_name: str, parent_tenant_id: str) -> dict:
|
|
"""Generate auth.json data for a child tenant"""
|
|
|
|
# Generate user IDs based on tenant ID
|
|
manager_id = str(uuid.uuid5(uuid.NAMESPACE_DNS, f"manager-{tenant_id}"))
|
|
staff_id = str(uuid.uuid5(uuid.NAMESPACE_DNS, f"staff-{tenant_id}"))
|
|
|
|
# Create users
|
|
users = [
|
|
{
|
|
"id": manager_id,
|
|
"tenant_id": tenant_id,
|
|
"name": f"Gerente {tenant_name}",
|
|
"email": f"gerente.{tenant_id.lower()}@panaderiaartesana.es",
|
|
"role": "manager",
|
|
"is_active": True,
|
|
"created_at": "BASE_TS - 180d",
|
|
"updated_at": "BASE_TS - 180d"
|
|
},
|
|
{
|
|
"id": staff_id,
|
|
"tenant_id": tenant_id,
|
|
"name": f"Empleado {tenant_name}",
|
|
"email": f"empleado.{tenant_id.lower()}@panaderiaartesana.es",
|
|
"role": "user",
|
|
"is_active": True,
|
|
"created_at": "BASE_TS - 150d",
|
|
"updated_at": "BASE_TS - 150d"
|
|
}
|
|
]
|
|
|
|
return {"users": users}
|
|
|
|
def main():
|
|
"""Main function to generate auth files for all child tenants"""
|
|
print("=== Generating Child Auth Files ===")
|
|
|
|
base_path = Path("shared/demo/fixtures/enterprise")
|
|
children_dir = base_path / "children"
|
|
|
|
# Get parent tenant info
|
|
parent_tenant_file = base_path / "parent" / "01-tenant.json"
|
|
with open(parent_tenant_file, 'r', encoding='utf-8') as f:
|
|
parent_data = json.load(f)
|
|
|
|
parent_tenant_id = parent_data["tenant"]["id"]
|
|
|
|
# Process each child directory
|
|
for child_dir in children_dir.iterdir():
|
|
if child_dir.is_dir():
|
|
tenant_id = child_dir.name
|
|
|
|
# Get tenant info from child's tenant.json
|
|
child_tenant_file = child_dir / "01-tenant.json"
|
|
if child_tenant_file.exists():
|
|
with open(child_tenant_file, 'r', encoding='utf-8') as f:
|
|
tenant_data = json.load(f)
|
|
|
|
# Child files have location data, not tenant data
|
|
tenant_name = tenant_data["location"]["name"]
|
|
|
|
# Generate auth data
|
|
auth_data = generate_child_auth_file(tenant_id, tenant_name, parent_tenant_id)
|
|
|
|
# Write auth.json file
|
|
auth_file = child_dir / "02-auth.json"
|
|
with open(auth_file, 'w', encoding='utf-8') as f:
|
|
json.dump(auth_data, f, ensure_ascii=False, indent=2)
|
|
|
|
print(f"✓ Generated {auth_file}")
|
|
else:
|
|
print(f"✗ Missing tenant.json in {child_dir}")
|
|
|
|
print("\n=== Auth File Generation Complete ===")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|