46 lines
812 B
Go
46 lines
812 B
Go
package helpers
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/session"
|
|
"github.com/gofiber/storage/badger/v2"
|
|
)
|
|
|
|
var store *session.Store
|
|
var storeCreated bool
|
|
|
|
func GetSessionStore(c *fiber.Ctx) (*session.Session, error) {
|
|
if !storeCreated {
|
|
config, err := GetConfig()
|
|
if err != nil {
|
|
var sess *session.Session
|
|
return sess, err
|
|
}
|
|
|
|
storage := badger.New(badger.Config{
|
|
Database: config.Sessions.Location,
|
|
Reset: false,
|
|
GCInterval: 10 * time.Second,
|
|
})
|
|
|
|
store = session.New(session.Config{
|
|
Storage: storage,
|
|
Expiration: time.Hour,
|
|
})
|
|
storeCreated = true
|
|
}
|
|
|
|
session, err := store.Get(c)
|
|
if err != nil {
|
|
return session, err
|
|
}
|
|
|
|
err = session.Save()
|
|
if err != nil {
|
|
return session, err
|
|
}
|
|
|
|
return store.Get(c)
|
|
}
|