Files
soft_usite/config/session.go
T
2026-05-01 12:08:21 -05:00

49 lines
1.2 KiB
Go
Executable File

package config
import (
"log"
"time"
"github.com/gofiber/session/v2"
pgprovider "github.com/gofiber/session/v2/provider/postgres"
)
type SessionConfig struct {
*session.Session
}
// Setup configura el almacén de sesiones en PostgreSQL con expiración de 1 año.
// Si el provider PostgreSQL falla (credenciales, red, etc.), usa memoria como fallback.
func (s *SessionConfig) Setup(db DatabaseDriver) error {
port := int64(db.Port)
if port == 0 {
port = 5432
}
provider, err := pgprovider.New(pgprovider.Config{
Host: db.Host,
Port: port,
Username: db.Username,
Password: db.Password,
Database: db.DBName,
TableName: "sessions",
MaxOpenConns: 20,
MaxIdleConns: 10,
ConnMaxLifetime: 5 * time.Minute,
})
if err != nil {
log.Printf("[SESSION] PostgreSQL provider error, usando memoria: %v", err)
s.Session = session.New(session.Config{
Expiration: 365 * 24 * time.Hour,
})
return nil
}
s.Session = session.New(session.Config{
Expiration: 365 * 24 * time.Hour,
Provider: provider,
})
log.Println("[SESSION] Sesiones persistentes en PostgreSQL (tabla: sessions)")
return nil
}