diff --git a/routes/openrouter.routes.js b/routes/openrouter.routes.js index f890818..42a43e8 100644 --- a/routes/openrouter.routes.js +++ b/routes/openrouter.routes.js @@ -14,7 +14,7 @@ const CACHE_DURATION = 60 * 60 * 1000; // 1 heure * GET /api/openrouter/models * Récupérer la liste des modèles disponibles depuis OpenRouter */ -router.get('/models', authenticateToken, requireAdmin, async (req, res) => { +router.get('/models', authenticateToken, async (req, res) => { try { // Vérifier le cache const now = Date.now(); diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 8321da5..8980b93 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -223,7 +223,7 @@ const Index = () => { }; const loadOpenRouterModels = async () => { - if (user?.is_admin && settings.openrouter_api_key) { + if (settings.openrouter_api_key) { setLoadingModels(true); try { const models = await OpenRouterService.getModels(); @@ -528,6 +528,13 @@ const Index = () => { chatEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [chatMessages]); + // Load models when chatbox opens + useEffect(() => { + if (chatOpen && openRouterModels.length === 0) { + loadOpenRouterModels(); + } + }, [chatOpen]); + // Set default model when models are loaded useEffect(() => { if (openRouterModels.length > 0 && !selectedModel) { @@ -2329,9 +2336,11 @@ const Index = () => { value={selectedModel} onChange={(e) => setSelectedModel(e.target.value)} className="w-full text-xs px-2 py-1.5 border border-input rounded-md bg-background" - disabled={chatLoading} + disabled={chatLoading || loadingModels} > - {openRouterModels.length === 0 ? ( + {loadingModels ? ( + + ) : openRouterModels.length === 0 ? ( ) : ( openRouterModels.map(model => (