ikurotime / gitgud

public
Add session manager and sessions table
DDavid committed on 2026-06-28 00:45 commit be71116
go.mod +9 −2
module gitgud
go 1.25.0
require (
github.com/go-chi/chi v1.5.5
github.com/joho/godotenv v1.5.1
)
-require github.com/mattn/go-sqlite3 v1.14.47
+require (
+ github.com/mattn/go-sqlite3 v1.14.47
+ golang.org/x/crypto v0.53.0
+)
-require github.com/a-h/templ v0.3.1020 // indirect
+require (
+ github.com/a-h/templ v0.3.1020
+ github.com/alexedwards/scs/sqlite3store v0.0.0-20251002162104-209de6e426de
+ github.com/alexedwards/scs/v2 v2.9.0
+)
go.sum +9 −0
github.com/a-h/templ v0.3.1020 h1:ypAT/L5ySWEnZ6Zft/5yfoWXYYkhFNvEFOeeqecg4tw=
github.com/a-h/templ v0.3.1020/go.mod h1:A2DlK61v+K+NRoGnhmYbNYVmtYHcFO5/AisMvBdDxTM=
+github.com/alexedwards/scs/sqlite3store v0.0.0-20251002162104-209de6e426de h1:c72K9HLu6K442et0j3BUL/9HEYaUJouLkkVANdmqTOo=
+github.com/alexedwards/scs/sqlite3store v0.0.0-20251002162104-209de6e426de/go.mod h1:Iyk7S76cxGaiEX/mSYmTZzYehp4KfyylcLaV3OnToss=
+github.com/alexedwards/scs/v2 v2.9.0 h1:xa05mVpwTBm1iLeTMNFfAWpKUm4fXAW7CeAViqBVS90=
+github.com/alexedwards/scs/v2 v2.9.0/go.mod h1:ToaROZxyKukJKT/xLcVQAChi5k6+Pn1Gvmdl7h3RRj8=
github.com/go-chi/chi v1.5.5 h1:vOB/HbEMt9QqBqErz07QehcOKHaWFtuj87tTDVz2qXE=
github.com/go-chi/chi v1.5.5/go.mod h1:C9JqLr3tIYjDOZpzn+BCuxY8z8vmca43EeMgyZt7irw=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
+github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-sqlite3 v1.14.47 h1:jOBI62gS7nKeZv+as1oGEy0+1qISgXwH/QBlR6KbfIo=
github.com/mattn/go-sqlite3 v1.14.47/go.mod h1:6JTjA44L93a0QCyJef5YvlPoKXntQPjzWv5gtm9sB6w=
+golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
+golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
internal/infra/persistence/sqlite/migrations/0002_sessions.sql +7 −0
+CREATE TABLE IF NOT EXISTS sessions (
+ token TEXT PRIMARY KEY,
+ data BLOB NOT NULL,
+ expiry REAL NOT NULL
+);
+
+CREATE INDEX IF NOT EXISTS sessions_expiry_idx ON sessions(expiry);
internal/infra/session/scs_store.go +19 −0
+package session
+
+import (
+ "database/sql"
+ "net/http"
+ "time"
+
+ "github.com/alexedwards/scs/sqlite3store"
+ "github.com/alexedwards/scs/v2"
+)
+
+func NewSessionManager(db *sql.DB) *scs.SessionManager {
+ m := scs.New()
+ m.Store = sqlite3store.New(db)
+ m.Lifetime = 7 * 24 * time.Hour
+ m.Cookie.HttpOnly = true
+ m.Cookie.SameSite = http.SameSiteLaxMode
+ return m
+}