v2
This commit is contained in:
@@ -5,55 +5,68 @@ import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"management/internal/config"
|
||||
db "management/internal/db/sqlc"
|
||||
|
||||
"github.com/alexedwards/scs/pgxstore"
|
||||
"github.com/alexedwards/scs/v2"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
var sessionManager *scs.SessionManager
|
||||
type ISession interface {
|
||||
Destroy(ctx context.Context) error
|
||||
LoadAndSave(next http.Handler) http.Handler
|
||||
Put(ctx context.Context, key string, val any)
|
||||
GetBytes(ctx context.Context, key string) []byte
|
||||
Exists(ctx context.Context, key string) bool
|
||||
RenewToken(ctx context.Context) error
|
||||
}
|
||||
|
||||
func Init() {
|
||||
sessionManager = scs.New()
|
||||
type session struct {
|
||||
sessionManager *scs.SessionManager
|
||||
}
|
||||
|
||||
func New(pool *pgxpool.Pool, prod bool) ISession {
|
||||
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
|
||||
sessionManager.Cookie.Secure = 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())
|
||||
sessionManager.Store = pgxstore.New(pool)
|
||||
// redis
|
||||
// sessionManager.Store = newRedisStore()
|
||||
|
||||
return &session{
|
||||
sessionManager: sessionManager,
|
||||
}
|
||||
}
|
||||
|
||||
func Destroy(ctx context.Context) error {
|
||||
return sessionManager.Destroy(ctx)
|
||||
func (s *session) Destroy(ctx context.Context) error {
|
||||
return s.sessionManager.Destroy(ctx)
|
||||
}
|
||||
|
||||
func LoadAndSave(next http.Handler) http.Handler {
|
||||
return sessionManager.LoadAndSave(next)
|
||||
func (s *session) LoadAndSave(next http.Handler) http.Handler {
|
||||
return s.sessionManager.LoadAndSave(next)
|
||||
}
|
||||
|
||||
func Put(ctx context.Context, key string, val interface{}) {
|
||||
sessionManager.Put(ctx, key, val)
|
||||
func (s *session) Put(ctx context.Context, key string, val any) {
|
||||
s.sessionManager.Put(ctx, key, val)
|
||||
}
|
||||
|
||||
func GetBytes(ctx context.Context, key string) []byte {
|
||||
return sessionManager.GetBytes(ctx, key)
|
||||
func (s *session) GetBytes(ctx context.Context, key string) []byte {
|
||||
return s.sessionManager.GetBytes(ctx, key)
|
||||
}
|
||||
|
||||
func Exists(ctx context.Context, key string) bool {
|
||||
return sessionManager.Exists(ctx, key)
|
||||
func (s *session) Exists(ctx context.Context, key string) bool {
|
||||
return s.sessionManager.Exists(ctx, key)
|
||||
}
|
||||
|
||||
func RenewToken(ctx context.Context) error {
|
||||
return sessionManager.RenewToken(ctx)
|
||||
func (s *session) RenewToken(ctx context.Context) error {
|
||||
return s.sessionManager.RenewToken(ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user