Agrega API Keys scoped (token + IP obligatoria + alcance) para /api/v2
Alternativa al ADMIN_API_KEY único de entorno, que sigue funcionando como llave maestra para no romper integraciones existentes. - Modelo ApiKey: token hasheado, IP/CIDR obligatoria (fail-closed sin IP), scopes habilitados, último uso (fecha + IP). - AdminApiAuth() acepta ahora tanto la llave maestra como una ApiKey; nuevo middleware RequireScope(scope) para gatear grupos de rutas. - Fase 1: scopes aplicados a lo más sensible — oss (archivos), query_runner (SQL arbitrario), usuarios (usuarios/roles/módulos), pasarelas (credenciales de pago). El resto de /api/v2 sigue con la llave maestra hasta una fase 2. - Panel /app/api-keys: crear/editar/revocar, token visible solo al crear, scopes por checkbox, IP obligatoria.
This commit is contained in:
@@ -151,6 +151,8 @@ func main() {
|
||||
&models.UmindDocumento{},
|
||||
&models.UmindChunk{},
|
||||
&models.UmindMensaje{},
|
||||
// API Keys de /api/v2 (token + IP obligatoria + scopes)
|
||||
&models.ApiKey{},
|
||||
}
|
||||
for _, m := range modelosBase {
|
||||
if err := app.Http.Database.DB.AutoMigrate(m); err != nil {
|
||||
@@ -186,6 +188,7 @@ func main() {
|
||||
migrations.SeedPagosExternos()
|
||||
migrations.SeedAutomatizacionIA()
|
||||
migrations.SeedUmind()
|
||||
migrations.SeedApiKeys()
|
||||
if n, err := models.RepararEstadosTareaInvalidos(); err != nil {
|
||||
log.Printf("[FIX] Error reparando estados de tareas: %v", err)
|
||||
} else if n > 0 {
|
||||
|
||||
Reference in New Issue
Block a user