A community based topic aggregation platform built on atproto
1package oauth 2 3import ( 4 "fmt" 5 "sync" 6 7 "github.com/gorilla/sessions" 8) 9 10var ( 11 // Global singleton cookie store 12 cookieStoreInstance *sessions.CookieStore 13 cookieStoreOnce sync.Once 14 cookieStoreErr error 15) 16 17// InitCookieStore initializes the global cookie store singleton 18// Must be called once at application startup before any handlers are created 19func InitCookieStore(secret string) error { 20 cookieStoreOnce.Do(func() { 21 if len(secret) < MinCookieSecretLength { 22 cookieStoreErr = fmt.Errorf("OAUTH_COOKIE_SECRET must be at least %d bytes for security", MinCookieSecretLength) 23 return 24 } 25 cookieStoreInstance = sessions.NewCookieStore([]byte(secret)) 26 }) 27 return cookieStoreErr 28} 29 30// GetCookieStore returns the global cookie store singleton 31// Panics if InitCookieStore has not been called successfully 32func GetCookieStore() *sessions.CookieStore { 33 if cookieStoreInstance == nil { 34 panic("cookie store not initialized - call InitCookieStore first") 35 } 36 return cookieStoreInstance 37}