49 lines
1.2 KiB
Go
Executable File
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
|
|
}
|