File size: 1,845 Bytes
ef1afea
 
df71cfc
ef1afea
 
 
 
 
 
 
 
df71cfc
 
 
 
ef1afea
df71cfc
ef1afea
 
 
 
 
 
 
 
 
 
 
 
 
 
df71cfc
 
ef1afea
 
 
 
 
df71cfc
 
 
 
 
 
 
 
 
 
 
 
ef1afea
df71cfc
 
 
ef1afea
 
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
"""
Archivo: credentials.py
Fecha de modificación: 04/06/2026
Autor: Equipo AgroVisión

Descripción:
Endpoint de conveniencia para desarrollo: informa **qué credenciales BYOK están
presentes en el `.env` del servidor** (variables `DEV_*` / `SUPABASE_*` / `DATABASE_URL`),
para que la UI pueda ofrecer "usar las del servidor" sin que el usuario las reescriba.
Devuelve **solo booleanos de presencia** — nunca los valores — para no exponer secretos.

En **producción** (`APP_ENV=production`), las `DEV_*` keys NO están disponibles
(cada usuario debe poner las suyas). El endpoint reporta `env: "production"` para
que la UI muestre el aviso correspondiente.

Estructura Interna:
    - `GET /api/credentials/status`: presencia (bool) de Groq, Copernicus y Supabase + entorno.

Entradas / Dependencias:
    - Variables de entorno (cargadas por `backend.config`).

Ejemplo de Integración:
    from backend.api.credentials import router
"""

from __future__ import annotations

import os

from fastapi import APIRouter

from backend.config import get_settings

router = APIRouter(prefix="/api/credentials", tags=["credenciales"])


@router.get("/status")
def credentials_status() -> dict:
    """Presencia (bool) de las credenciales en el `.env` del servidor (sin valores) + entorno."""
    settings = get_settings()
    is_dev = settings.app_env == "development"

    # En producción, las DEV_* keys NO deben usarse (cada usuario pone las suyas)
    dev_groq = bool(os.getenv("DEV_GROQ_API_KEY")) if is_dev else False
    dev_cop = (
        bool(os.getenv("DEV_COPERNICUS_CLIENT_ID") and os.getenv("DEV_COPERNICUS_CLIENT_SECRET"))
        if is_dev
        else False
    )

    return {
        "env": settings.app_env,
        "groq": dev_groq,
        "copernicus": dev_cop,
        "supabase": bool(os.getenv("DATABASE_URL")),
    }