package session import ( "context" "net/http" "time" "management/internal/config" db "management/internal/db/sqlc" "github.com/alexedwards/scs/pgxstore" "github.com/alexedwards/scs/v2" ) var sessionManager *scs.SessionManager func Init() { sessionManager = scs.New() sessionManager.Lifetime = 24 * time.Hour sessionManager.IdleTimeout = 2 * time.Hour sessionManager.Cookie.Name = "token" sessionManager.Cookie.HttpOnly = true sessionManager.Cookie.Persist = true sessionManager.Cookie.SameSite = http.SameSiteStrictMode sessionManager.Cookie.Secure = config.File.App.Prod // postgres // github.com/alexedwards/scs/postgresstore // sessionManager.Store = postgresstore.New(db) // pgx // github.com/alexedwards/scs/pgxstore sessionManager.Store = pgxstore.New(db.Engine.Pool()) // redis // sessionManager.Store = newRedisStore() } func Destroy(ctx context.Context) error { return sessionManager.Destroy(ctx) } func LoadAndSave(next http.Handler) http.Handler { return sessionManager.LoadAndSave(next) } func Put(ctx context.Context, key string, val interface{}) { sessionManager.Put(ctx, key, val) } func GetBytes(ctx context.Context, key string) []byte { return sessionManager.GetBytes(ctx, key) } func Exists(ctx context.Context, key string) bool { return sessionManager.Exists(ctx, key) } func RenewToken(ctx context.Context) error { return sessionManager.RenewToken(ctx) }