fix(api-keys): no se podía asignar el scope vcard
La pantalla lo ofrecía y las rutas de /api/v2/vcard lo exigen, pero la lista de scopes válidos del backend nunca lo incluyó: crear la llave devolvía "scope inválido: vcard" y la integración de vCard no tenía forma de autenticarse. La lista estaba escrita dos veces —una en Go y otra en el HTML— y se desincronizaron. Ahora la vista la pide al backend, así que no puede volver a ofrecer algo que el backend rechace, y un test fija que todo scope exigido por las rutas se pueda asignar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4135850e5b
commit
dda5898c0d
@@ -2,6 +2,7 @@ package controllers
|
||||
|
||||
import (
|
||||
"math"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
@@ -17,6 +18,20 @@ var scopesValidos = map[string]bool{
|
||||
"query_runner": true,
|
||||
"usuarios": true,
|
||||
"pasarelas": true,
|
||||
"vcard": true,
|
||||
}
|
||||
|
||||
// ScopesDisponibles devuelve la lista para que la vista la muestre en vez de
|
||||
// tener su propia copia: la copia de la vista ya ofreció "vcard" cuando el
|
||||
// backend todavía lo rechazaba.
|
||||
// GET /app/api-keys/scopes
|
||||
func ScopesDisponibles(c *fiber.Ctx) error {
|
||||
lista := make([]string, 0, len(scopesValidos))
|
||||
for s := range scopesValidos {
|
||||
lista = append(lista, s)
|
||||
}
|
||||
sort.Strings(lista)
|
||||
return c.JSON(lista)
|
||||
}
|
||||
|
||||
// ApiKeysIndex renderiza el panel de administración de API keys.
|
||||
|
||||
Reference in New Issue
Block a user