← back to Designer Wallcoverings
DW-Agents/dw-agents/fix-auth-order.py
116 lines
#!/usr/bin/env python3
"""
Fix middleware order - auth must come before chat
"""
import os
import re
AGENTS = [
'/root/DW-Agents/agent-accounting/accounting-agent.ts',
'/root/DW-Agents/agent-completed-tasks/completed-tasks-agent.ts',
'/root/DW-Agents/agent-digital-samples/digital-samples-agent.ts',
'/root/DW-Agents/agent-executive-ceo/ceo-dashboard-agent.ts',
'/root/DW-Agents/agent-executive-cfo/cfo-dashboard-agent.ts',
'/root/DW-Agents/agent-executive-coo/coo-dashboard-agent.ts',
'/root/DW-Agents/agent-executive-vp-ops/vp-ops-dashboard-agent.ts',
'/root/DW-Agents/agent-in-parallel/in-parallel-agent.ts',
'/root/DW-Agents/agent-legal-team/legal-agent.ts',
'/root/DW-Agents/agent-log-monitor/log-monitor-agent.ts',
'/root/DW-Agents/agent-marketing/marketing-agent.ts',
'/root/DW-Agents/agent-needs-attention/needs-attention-agent.ts',
'/root/DW-Agents/agent-new-client-signup/new-client-signup-agent.ts',
'/root/DW-Agents/agent-parallel-processes/parallel-processes-agent.ts',
'/root/DW-Agents/agent-purchasing-office/purchasing-office-agent.ts',
'/root/DW-Agents/agent-restart-analyzer/restart-analyzer-agent.ts',
'/root/DW-Agents/agent-security/security-agent.ts',
'/root/DW-Agents/agent-server-uptime/server-uptime-agent.ts',
'/root/DW-Agents/agent-shopify-store/shopify-store-agent.ts',
'/root/DW-Agents/agent-skills-manager/skills-manager-agent.ts',
'/root/DW-Agents/agent-task-orchestrator/task-orchestrator-agent.ts',
'/root/DW-Agents/agent-todays-highlights/todays-highlights-agent.ts',
'/root/DW-Agents/agent-trend-research/trend-research-agent.ts',
'/root/DW-Agents/agent-ui-manager/ui-manager-agent.ts',
'/root/DW-Agents/agent-zendesk-chat/zendesk-chat-agent.ts',
'/root/DW-Agents/master-hub.ts',
]
def fix_middleware_order(file_path):
"""Reorder middleware: auth BEFORE chat"""
if not os.path.exists(file_path):
print(f"❌ Not found: {file_path}")
return False
with open(file_path, 'r') as f:
content = f.read()
# Check if already correct
if content.find('app.use(requireGlobalAuth)') < content.find('app.use(chatMiddleware'):
print(f"✅ {os.path.basename(os.path.dirname(file_path))} - Already correct order")
return True
# Remove existing middleware declarations
content = re.sub(r'app\.use\(cookieParser\(\)\);\s*\n', '', content)
content = re.sub(r'// Add inter-agent chat widget\s*\napp\.use\(chatMiddleware\(\{[^}]+\}\)\);\s*\n', '', content)
content = re.sub(r'app\.use\(chatMiddleware\(\{[^}]+\}\)\);\s*\n', '', content)
content = re.sub(r'app\.use\(requireGlobalAuth\);\s*\n', '', content)
# Find PORT definition
port_match = re.search(r'const PORT = [^;]+;', content)
if not port_match:
print(f"⚠️ {os.path.basename(os.path.dirname(file_path))} - Could not find PORT")
return False
# Extract agent info from existing chatMiddleware call (if it was there)
agent_match = re.search(r"agentId: '([^']+)'.*agentName: '([^']+)'.*port: (\d+)", content, re.DOTALL)
if agent_match:
agent_id, agent_name, port = agent_match.groups()
else:
# Derive from file path
agent_name = os.path.basename(os.path.dirname(file_path)).replace('agent-', '').replace('-', ' ').title()
agent_id = os.path.basename(os.path.dirname(file_path))
port = port_match.group(0).split('=')[1].strip().rstrip(';').split('||')[-1].strip()
# Build correct middleware block
middleware_block = f'''
// Global Authentication - MUST come before any other middleware
app.use(cookieParser());
app.use(requireGlobalAuth);
// Add inter-agent chat widget (after auth)
app.use(chatMiddleware({{
agentId: '{agent_id}',
agentName: '{agent_name}',
port: {port},
category: 'agent'
}}));
'''
# Insert after PORT definition
insert_pos = port_match.end()
content = content[:insert_pos] + '\n' + middleware_block + content[insert_pos:]
# Write back
with open(file_path, 'w') as f:
f.write(content)
print(f"✅ {os.path.basename(os.path.dirname(file_path))} - Fixed middleware order")
return True
def main():
print("🔒 Fixing Global Auth Middleware Order")
print("━" * 60)
success = 0
for agent_file in AGENTS:
if fix_middleware_order(agent_file):
success += 1
print("━" * 60)
print(f"✅ Fixed {success}/{len(AGENTS)} agents")
print("\n🔄 Restart all agents: pm2 restart all")
if __name__ == '__main__':
main()