fix: rutas GET+POST /modules faltantes + seed módulo Administración (roles/módulos/submódulos/usuarios)
This commit is contained in:
@@ -58,6 +58,7 @@ func main() {
|
|||||||
migrations.SeedIntegraciones()
|
migrations.SeedIntegraciones()
|
||||||
migrations.SeedPasarelas()
|
migrations.SeedPasarelas()
|
||||||
migrations.SeedServidores()
|
migrations.SeedServidores()
|
||||||
|
migrations.SeedAdministracion()
|
||||||
// Iniciar cron de vencimientos
|
// Iniciar cron de vencimientos
|
||||||
services.IniciarCron()
|
services.IniciarCron()
|
||||||
defer services.DetenerCron()
|
defer services.DetenerCron()
|
||||||
|
|||||||
@@ -396,3 +396,74 @@ func SeedServidores() {
|
|||||||
|
|
||||||
log.Println("[SEED] Seed de Servidores completado.")
|
log.Println("[SEED] Seed de Servidores completado.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SeedAdministracion crea el módulo "Administración" con sus submódulos
|
||||||
|
// (Roles, Módulos, Submódulos, Usuarios) y los asigna a todos los roles. Es idempotente.
|
||||||
|
func SeedAdministracion() {
|
||||||
|
db := app.Http.Database.DB
|
||||||
|
|
||||||
|
var modulo models.Modules
|
||||||
|
if err := db.Where("title = ?", "Administración").First(&modulo).Error; err != nil {
|
||||||
|
modulo = models.Modules{
|
||||||
|
Title: "Administración",
|
||||||
|
Description: "Gestión de usuarios, roles, módulos y permisos del sistema",
|
||||||
|
ModifiedAt: time.Now(),
|
||||||
|
}
|
||||||
|
if err := db.Create(&modulo).Error; err != nil {
|
||||||
|
log.Printf("[SEED] Error creando módulo Administración: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Printf("[SEED] Módulo 'Administración' creado con ID %d", modulo.ID)
|
||||||
|
} else {
|
||||||
|
log.Printf("[SEED] Módulo 'Administración' ya existe (ID %d)", modulo.ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
entries := []struct{ title, desc, url string }{
|
||||||
|
{"Roles", "Gestión de roles y permisos", "/app/roles"},
|
||||||
|
{"Módulos", "Gestión de módulos del menú lateral", "/app/modules"},
|
||||||
|
{"Submódulos", "Gestión de submódulos y URLs", "/app/submodules"},
|
||||||
|
{"Usuarios", "Gestión de usuarios del sistema", "/app/users"},
|
||||||
|
}
|
||||||
|
|
||||||
|
var insertados []models.Submodules
|
||||||
|
for _, e := range entries {
|
||||||
|
var sub models.Submodules
|
||||||
|
if err := db.Where("url = ?", e.url).First(&sub).Error; err != nil {
|
||||||
|
sub = models.Submodules{
|
||||||
|
Title: e.title,
|
||||||
|
Description: e.desc,
|
||||||
|
Url: e.url,
|
||||||
|
ModuleId: modulo.ID,
|
||||||
|
ModifiedAt: time.Now(),
|
||||||
|
}
|
||||||
|
if err := db.Create(&sub).Error; err != nil {
|
||||||
|
log.Printf("[SEED] Error creando submódulo '%s': %v", e.title, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
log.Printf("[SEED] Submódulo '%s' creado (ID %d)", e.title, sub.ID)
|
||||||
|
} else {
|
||||||
|
if sub.ModuleId != modulo.ID {
|
||||||
|
db.Model(&sub).Update("module_id", modulo.ID)
|
||||||
|
log.Printf("[SEED] Submódulo '%s' reasignado a módulo Administración", sub.Title)
|
||||||
|
} else {
|
||||||
|
log.Printf("[SEED] Submódulo '%s' ya existe (ID %d)", sub.Title, sub.ID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
insertados = append(insertados, sub)
|
||||||
|
}
|
||||||
|
|
||||||
|
var roles []models.Roles
|
||||||
|
if err := db.Find(&roles).Error; err != nil {
|
||||||
|
log.Printf("[SEED] Error obteniendo roles: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, rol := range roles {
|
||||||
|
if err := db.Model(&rol).Association("Submodules").Append(&insertados); err != nil {
|
||||||
|
log.Printf("[SEED] Error asignando submódulos al rol '%s': %v", rol.Name, err)
|
||||||
|
} else {
|
||||||
|
log.Printf("[SEED] Submódulos de Administración asignados al rol '%s'", rol.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("[SEED] Seed de Administración completado.")
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user