mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 06:47:20 +08:00
35 lines
777 B
Go
35 lines
777 B
Go
package bootstrap
|
|
|
|
import (
|
|
"github.com/go-rat/gormstore"
|
|
"github.com/go-rat/sessions"
|
|
"github.com/knadh/koanf/v2"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func NewSession(conf *koanf.Koanf, db *gorm.DB) (*sessions.Manager, error) {
|
|
// initialize session manager
|
|
lifetime := conf.Int("session.lifetime")
|
|
// TODO: will remove this fallback in v3
|
|
if lifetime == 0 {
|
|
lifetime = 120
|
|
}
|
|
manager, err := sessions.NewManager(&sessions.ManagerOptions{
|
|
Key: conf.MustString("app.key"),
|
|
Lifetime: lifetime,
|
|
GcInterval: 5,
|
|
DisableDefaultDriver: true,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// extend gorm store driver
|
|
store := gormstore.New(db)
|
|
if err = manager.Extend("default", store); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return manager, nil
|
|
}
|