fix: layout CSS en Cloudflare/Hostinger + sesiones en PostgreSQL 1 año
This commit is contained in:
+1
-1
@@ -91,7 +91,7 @@ func (cfg *AppConfig) LoadComponents() {
|
||||
cfg.LoadStatic()
|
||||
cfg.PrepareLog()
|
||||
_ = cfg.Database.Setup()
|
||||
_ = cfg.Session.Setup()
|
||||
_ = cfg.Session.Setup(cfg.Database.Default)
|
||||
cfg.Cache.Setup()
|
||||
cfg.Storage.Setup()
|
||||
}
|
||||
|
||||
+18
-30
@@ -1,49 +1,37 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/gofiber/session/v2"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
pgprovider "github.com/gofiber/session/v2/provider/postgres"
|
||||
)
|
||||
|
||||
type SessionConfig struct {
|
||||
Database string `yaml:"database" env:"SESSION_DATABASE"` // Ruta de la base de datos SQLite
|
||||
*session.Session
|
||||
}
|
||||
|
||||
func (s *SessionConfig) Setup() error {
|
||||
// Abrir conexión a la base de datos SQLite
|
||||
db, err := gorm.Open(sqlite.Open(s.Database), &gorm.Config{})
|
||||
// Setup configura el almacén de sesiones en PostgreSQL con expiración de 1 año.
|
||||
func (s *SessionConfig) Setup(db DatabaseDriver) error {
|
||||
provider, err := pgprovider.New(pgprovider.Config{
|
||||
Host: db.Host,
|
||||
Port: int64(db.Port),
|
||||
Username: db.Username,
|
||||
Password: db.Password,
|
||||
Database: db.DBName,
|
||||
TableName: "sessions",
|
||||
MaxOpenConns: 20,
|
||||
MaxIdleConns: 10,
|
||||
ConnMaxLifetime: 5 * time.Minute,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to connect to the database: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Migrar la estructura de la tabla para sesiones
|
||||
err = db.AutoMigrate(&Session{}) // Define la estructura de la sesión según sea necesario
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to migrate database: %v", err)
|
||||
}
|
||||
|
||||
// Configurar el proveedor de sesiones en memoria
|
||||
store := session.New(session.Config{
|
||||
s.Session = session.New(session.Config{
|
||||
Expiration: 365 * 24 * time.Hour, // 1 año
|
||||
}) // Usar el proveedor de sesiones en memoria
|
||||
|
||||
// Crear una nueva sesión
|
||||
s.Session = store
|
||||
Provider: provider,
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Estructura para las sesiones (ajusta según tus necesidades)
|
||||
type Session struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
SessionID string `gorm:"unique"`
|
||||
Data string `gorm:"type:text"`
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
ExpireAt time.Time
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user